演算法導論 練習2 1

2021-10-22 04:05:36 字數 1040 閱讀 3796

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...