请有人解释一下为什么这个快速排序代码没有按预期工作

please can someone explain me why this quick sort code is not working as expected

我第一次在没有看到任何代码的情况下仅通过动画进行了快速排序,但是解决方案不是我所期望的。谁能告诉我我在这段代码中做错了什么?因为按照我的说法,算法应该有效,但它不起作用。请指出我的错误。如果可以的话会很有帮助。

我的代码

#include<iostream>
using namespace std;

void printArray(int arr[]){
    for(int i = 0 ;i<8;i++){
        cout<<arr[i]<<endl;
    }
}

void swap(int *xp, int *yp) 
{ 
    int temp = *xp; 
    *xp = *yp; 
    *yp = temp; 
} 

int partioner(int array[],int low, int high){
int k = low;
int piv =array[0];
int i =low+1;
int j =high;
    while(j>i){
        while(piv<array[j]){
            j--;}
        
        while(piv>array[i]){

            i++;}

    if(i<j){
    swap(&array[i],&array[j]);}}
    
    swap(&array[low],&array[j]);
    return j;

}

void quickSort(int array[],int low,int high)
{
    if(low<high){
      int loc=partioner(array,low,high);
      quickSort(array,low,loc-1);
      quickSort(array,loc+1,high);

    }
}




int main(){
    int array[] = {8,7,6,5,4,3,2,1};
    quickSort(array,0,7);
    printArray(array);
}

在您的 partioner() 函数中,它应该是:

int piv = array[low];

而不是:

int piv = array[0];

进一步阅读Quick sort - Geeksforgeeks

旁注:如果您使用的是 C++,也许可以看看 sort()sort() - cplusplus.com