Sorting 快速排序中的分区函数工作不正常
我尝试使用快速排序的分区函数将数组分成两部分,一部分小于所需元素(枢轴),另一部分大于所需元素(枢轴) 配分函数Sorting 快速排序中的分区函数工作不正常,sorting,computer-science,quicksort,Sorting,Computer Science,Quicksort,我尝试使用快速排序的分区函数将数组分成两部分,一部分小于所需元素(枢轴),另一部分大于所需元素(枢轴) 配分函数 void partition(int a[],int beg,int end,int pivotindex){ swap(a[pivotindex],a[end]); int x=a[end]; int i=beg-1; for(int j=beg;j<=end-1;j++){ if(a[j]<=x){
void partition(int a[],int beg,int end,int pivotindex){
swap(a[pivotindex],a[end]);
int x=a[end];
int i=beg-1;
for(int j=beg;j<=end-1;j++){
if(a[j]<=x){
i++;
swap(a[i],a[j]);
}
}
swap(a[i+1],a[end]);
return ;
}
输出
0 1 1 0 2 1 2
在干运行代码时,输出是正确的,但是由于教科书中指定了分区函数的角色,所以我希望得到这个输出
0 1 1 0 1 2 2
或者它的其他组合,但两个“2”都必须在它的末尾。
我对配分函数的理解有缺陷吗?或者我的实现有问题吗
0 1 1 0 1 2 2