Я пытаюсь осуществить быструю сортировку с использованием случайного стержняРандомизированной быстрая сортировки в С доходностью несобственными/частично отсортировано
void QuickSort(int *arr,int left,int right){
if(right-left+1 > 2){
int i = 0,storeIndex = left;
int pivot = left + (int)(rand() % (right-left+1));
swap(&arr[pivot],&arr[right]);
for(i = left; i < right; i++){
if(arr[i] < arr[right]){
swap(&arr[i],&arr[storeIndex]);
storeIndex++;
}
}
swap(&arr[storeIndex],&arr[right]);
QuickSort(arr,left,storeIndex-1);
QuickSort(arr,storeIndex+1,right);
}
}
но это дает выходной сигнал, который неправильно отсортированному как
несортированное: [81, 87,47,59,81,18,25,40,56,0]
отсортирован: [0,18,25,40,56,47,59,81,87,81]
это что-то не так с моим алгоритмом, потому что что-то подобное в Python работал отлично
right-left + 1> 1 works Я был своего рода смешением версии python, где мы проверяем, len (arr) <2 спасибо – user2007060