演算法導論練習 2 1 Insertion sort

2021-10-04 22:47:16 字數 847 閱讀 2422

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

證明正確性:

先證明迴圈的正確性,迴圈不變式為:在 for 迴圈的每次迭代開始的時候,子陣列 a[1 … i - 1] 中不包含元素 v。

正式表述問題:輸入兩個長度為 n 的陣列 a 和陣列 b(下標從 1 到 n),陣列中的元素是 0 或 1,陣列 a 和陣列 b 分別表示乙個二進位制數(下標 1 的元素表示最低位)。要求返回長度為 n+1 的陣列 c,以同樣的格式表示乙個二進位制數,且其大小等於 a 與 b 之和。

偽碼:

int c[n + 1] = , carry = 0

for i = 1 to n

c[i] = (a[i] + b[i] + carry) % 2

carry = (a[i] + b[i] + carry) / 2

c[n + 1] = carry

return c

演算法導論 練習2 1

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

《演算法導論》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節程式設計練習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...