算法導論第二章
2.1 插入排序
1-1
- 首先,31是作爲已經拿到左手上的牌
- j = 2,即我們開始再桌面上摸牌41,且我們左手最多有A.length = n張牌
- key獲取當前牌的數據
- while語句開始循環,並和左手已經排好序的牌做對比,如果當前牌大於 前面的牌,則前面的牌往後移動一位,如果小於前面的牌或是前面沒有牌了,則退出循環
- 將當前的牌插入左手牌中
- 依次在for循環中迭代5次後,排序完成
1-2
INSERTION-SORT(A) // 用非升序排序重寫
1 for j = 2 to A.length
2 key = A[j];
3 // 將A[j]插入已排序的序列A[1...j - 1];
4 i = j - 1;
5 while i > 0 and key > A[i]
6 A[i + 1] = A[i]
7 i = i - 1;
8 A[i + 1] = key
1-3
FIND-SORT(A, u)
1 for i = 1 to A.length // 在代碼中元素數量n用A.length代替
2 if u == A[i]
3 return A[i]
4 return NIL
1-4
ADD(A, B)
1 C = [0...0](C.length = A.length + 1)
2 for i = A.length downto 0
3 sum = A[i] + B[i]
4 if sum == 2 or sum + C[i + 1] == 2
5 C[i] = C[i] + 1
6 else
7 C[i + 1] = sum