这是我的分区函数的相对部分:
while(low < high){
while(arr[low] < pivot)
low += 1;
while( arr[high] > pivot)
high -= 1;
people temp = arr[low];
arr[low] = arr[high];
arr[high] = temp;
if(L==low && H==high)
{low+=1; high -= 1;}
L=low; H = high;
}
我使用 L 和 H 来查看在封闭循环结束时是否改变低或高。没有它们,如果我不增加低或高,我可能会陷入循环,但同时我需要在交换后重新测试该值。
我认为代码有两个问题。
- 当数组的元素等于枢轴时,您不考虑这种情况。
- 当
arr[low] > pivot
和arr[high] < pivot
但low >= high
时,您不考虑这种情况。
在此处查看一些分区代码。