我想讓我的頭圍繞歸併排序算法的一部分的遞歸排序函數。這是我的代碼,我幾乎可以肯定是正確的(在線課程之後)。遞歸自頂向下mergesort
private static void sort(Comparable[] a, Comparable[] aux, int low, int high) {
if (high <= low) return;
int mid = low + (high - low)/2;
sort (a, aux, low, mid);
sort (a, aux, mid+1, high);
merge(a, aux, low, mid, high);
}
我明白歸併does-它打破每個子陣列分解成2級較小的子陣列,重複該直到子陣列是一個長度(根據定義排序),然後合併。然而,這種排序函數用來實現這個功能的實際方法很難讓我遵循。也許是因爲我不習慣遞歸函數,但是我想知道是否有人能夠說明操作的順序以及第一次合併時的參數。
例如,當它遇到FIRST遞歸調用來排序(a,aux,low,mid)時 - 它是否中斷操作,而不是繼續執行第二個排序和下面的合併函數,而不是立即調用sort新參數?在這種情況下,當第二個電話進行排序時,排序(a,aux,mid + 1,high);發生?
感謝您的任何幫助。這是我第一次在這裏發佈,如果有任何格式問題,請讓我知道。