算法导论第二章
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