1
我正在編寫一個快速排序程序。部分quicksort涉及使用insertionsort,但它只對一定範圍內的元素進行排序,因爲quicksort處理其餘部分。我試圖模仿我的教科書提供的方法,使用使用插入排序僅對數組的一部分進行排序
public static void insertionSort(int a[], int left, int right)
但我很努力弄清楚如何使用左和右。這是不使用左,右的參數插入排序代碼:
public static void insertionSort(int a[], int left, int right) {
int j;
for (int p = 1; p < a.length; p++) {
int tmp = a[p];
for(j = p; j > 0 && tmp < a[j - 1]; j--) {
a[j] = a[j-1];
}
a[j] = tmp;
}
}
如果我要加入左,右參數,以幫助排序只有數組的一部分,他們會在哪裏申請?
感謝您的幫助。
我會解釋左右兩邊是包含還是排他性,並解釋左側和右側是基於零還是基於一個索引。 – Rainbolt
感謝您的幫助。我嘗試過這種方式,並且遇到了一個小小的異常情況,而且排序不正確。我用p
@Rainbolt這很好的澄清。約翰,這就是雨布要我澄清的事情。很高興你想出來了。 – Ryan