首先確定insertsort的巨集觀語義是對以陣列的0至第n索引項進行插入排序
假設要呼叫insertsort(arr, n),可以得到規模更小的子問題:
1.對陣列的0至第n - 1索引項進行插入排序
2.將陣列的第n索引項插入到有序陣列中
聚焦函式的巨集觀語義,可以更好地寫出遞迴函式。
// 對0至n索引項進行插入排序
private
static
void
insertsort
(int
arr,
int n)
insertsort
(arr, n -1)
;int temp = arr[n]
;int index = n;
while
(index >
0&& temp < arr[index -1]
) arr[index]
= temp;
}
// 對前n項進行排序
private
static
void
insertsort
(int
arr,
int n)
arr[index]
= temp;
}}
遞迴(3) 遞迴形式進行插入排序
分析 對陣列的0 倒數第乙個排序等價於 對陣列的0 倒數第二個元素,這部分排序 然後把最後乙個元素插入到這個有序的部分中。public class 13遞迴形式進行插入排序 insertsort arr,8 for int i 0 i arr.length i static void inserts...
遞迴形式改寫插入排序
2020.2.7 13 30 思路 從第乙個值開始,向前面的插入,後面的數字在向前面插入的時 候,前面的數字一定已經排好序了,找乙個位置將這個數再放入到正確 的位置。演示 public static void main string args system.out.println 排序之前 for ...
插入排序(binary 遞迴法)
因為插入演算法實質是與有序的陣列依次比較,所以乙個數與有序陣列比較並排序的做法可以用二分法來做到。def insert binary sort x result x 0 for i in range 1,len x result my method result,x i return result ...