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