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