谁能指出为什么这种快速排序的实现无法正常工作,我已经经历了几次,而且似乎找不到错误

int quickPartition ( int data[], int p, int r)
{
    int x=data[r];
    int i=p-1;
    for (int j=p; j<r; j++)
    {
        if(data[j]<x)
        {
            i++;
            int temp=data[i];
            data[i]=data[j];
            data[j]=temp;
        }
        int temp=data[i+1];
        data[i+1]=data[r];
        data[r]=temp;
    }
    i++;
    cout<<"i:"<<i<<endl;
    return i;
}

void myQuickSort(int data[], int left, int right)
{
    if(left<right)
    {
        int q=quickPartition(data,left,right);
        myQuickSort(data,left,q-1);
        myQuickSort(data,q+1,right);
    }
}


quicksort的调用很简单

myQuickSort(anArray,0,size-1);

最佳答案

方法

    int temp=data[i+1];
    data[i+1]=data[r];
    data[r]=temp;


应该超出for循环。

关于c++ - 快速排序调试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8765028/

10-17 00:31