許多例子在網絡上約快速排序(在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)
,那麼我們基本上會用相同的值交換相同的值。
任何人都可以爲我解決這個難題?
你能發佈一個這樣的在線代碼的鏈接嗎?我認爲你是對的,與一個元素本身交換是沒有意義的 – shole
上面的代碼片段實際上來自於vogella博客。 – Lucas