fix dublicate was at the end at all time

This commit is contained in:
Jonas Urban 2025-11-23 17:02:09 +01:00
parent 42243120eb
commit e4a7f9ac28

View File

@ -11,14 +11,22 @@
* Duplizieren eines zufälligen Eintrags im Array.
* in `getDuplicate()`: Sortieren des Arrays und Erkennen der doppelten Zahl durch Vergleich benachbarter Elemente. */
// Returns len random numbers between 1 and 2x len in random order which are all different, except for two entries.
// Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while
// creating random numbers.
static void dublicateRandomEntry (unsigned int *numbers, unsigned int len)
{
unsigned int dubIndx = rand() % len;
unsigned int copyIndx = rand() % len;
numbers[copyIndx] = numbers[dubIndx];
}
static int compare(const void *a, const void *b)
{
return (*(int *)a > *(int *)b) - (*(int *)a < *(int *)b);
}
// Returns len random numbers between 1 and 2x len in random order which are all different, except for two entries.
// Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while
// creating random numbers
unsigned int *createNumbers(unsigned int len)
{
if (len < 2)
@ -48,8 +56,7 @@ unsigned int *createNumbers(unsigned int len)
}
// Duplicate one random entry
unsigned int dupIndex = rand() % (len - 1);
numbers[len - 1] = numbers[dupIndex];
dublicateRandomEntry(numbers, len);
clearTree(root); //Notwendigkeit muss noch restlichem Code entnommen werden
return numbers;