2.1-1
2.1-2
```python
# 重寫insertion-sort
# python 下列表從0 開始
def insertion_sort(a):
for j in range(1,len(a)):
key=a[j]
i=j-1
while i>=0 and a[i]迴圈不變式的證明:
初始化:
起始時未對陣列a中的元素進行操作
維護:在第i步中,我們已經知道看a[0,1,…,i-1]都與v不同,所以比較a[i]與v的關係,如果相等就返回i。
終止:當 i >a.length 時,迴圈終止,此時已經說明a中所有的元素均已經被檢查過了,沒有發現與v相同
的值,返回nil
2.1-4
輸入:兩個bool型別的陣列a=,b=,每個表示以二進位制格式儲存的整數(每個數字是乙個數字,0或1,最低有效位在前),每個長度n。
輸出:乙個陣列c=,其中 c』=a』+b』, a』,b』,c』是陣列a,b,c中元素
defadd_binary
(a,b)
: c=[0
for _ in
range
(len
(a)+1)
] carry=
0# 進製標誌
for i in
range
(len
(a))
: c[i]
=(a[i]
+b[i]
+carry)%2
carry=
int(
(a[i]
+b[i]
+carry)/2
) c[i+1]
=carry # 有可能會多出一位
return ca=[
1,0,
0]b=[
1,1,
1]c=add_binary(a,b)
print
(c)
《演算法導論》2 1練習答案
2.1 1應該不用寫了 2.1 2重寫過程inertion sort,使之按公升序排序 偽 實現 inertion sort a for j 2 to a.length key a j insert a j to the sorted sequence a 1.j 1 i j 1 while i 0...
演算法導論練習 2 1 Insertion sort
for j 2 to a.length key a j i j 1 while i 0 and a i key a i 1 a i i i 1 a i 1 key偽碼 for i 1 to a.length if v a i return i return nil證明正確性 先證明迴圈的正確性,迴圈...
演算法導論 2 1節程式設計練習C 實現
1.insertion sort a 插入排序 非降序排序 include include include using namespace std vectorinsertion vector a a i 1 key return a int main vectorb insertion a for...