快速排序 - 相等检查的原因
网络上许多关于Quicksort(Java)的例子都与此接近:
private void quicksort(int low, int high) {
int i = low, j = high;
int pivot = numbers[low + (high-low)/2];
while (i <= j) {
while (numbers[i] < pivot) {
i++;
}
while (numbers[j] > pivot) {
j--;
}
if (i <= j) {
exchange(i, j);
i++;
j--;
}
}
if (low < j)
quicksort(low, j);
if (i < high)
quicksort(i, high);
}
我感到困惑的是,为什么会有这些相等的检查:
1) 代替while (i <= j)
while (i < j)
2) 代替if (i <= j)
if (i < j)
是否有任何边缘情况,这等于是至关重要的?根据我的理解,如果我们有,那么我们基本上会用相同的价值交换相同的价值。if(i == j)
有人能为我解决这个难题吗?