C中快速排序函数中的错误


#include<iostream>
using namespace std;
int swap(int *a,int i,int j)
{
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
}
int pivot(int *a,int low,int high)
{
    int j,i=low-1,x=a[high];
    for(j=i+1;j<high;j++)
    {
        if(a[j]<x)
            swap(a,j,++i);
    }
    swap(a,i,high);
    return i;
}
int quick(int *a, int low, int high)
{
    if(low<high)
    {
        int p=pivot(a,low,high);
        quick(a,low,p-1);
        quick(a,p+1,high);
    }
}
int main()
{
    int a[]={3,2,1,5,8,7,5,6,9,8},i;
    quick(a,0,9);
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    return 0;
}

你能帮我弄清楚为什么这个代码没有输出吗。我尽了最大的努力想弄清楚,但我不知道bug在哪里。在我看来,代码中有一些小错误。

在返回语句之前的pivot函数中使用此函数。

swap(a,++i,high);

而不是

swap(a,i,high);

最新更新