《演算法導論》課後習題 2 1 3

2021-05-31 23:33:54 字數 958 閱讀 5644

consider thesearching problem:

input:a sequence of n numbers a = and a value v.

output:an index i such that a[i] = v or the special value nil if v does not

write pseudocode forlinear search, which scans through the sequence, looking

for v. using a loop invariant, prove that your algorithm is correct. make sure that

your loop invariant fulfills the three necessary properties. 

偽**:

linear_search(a , v)

fori=1 to n

do ifa[i] = v

thenreturn i

i = i + 1

returnnil

利用迴圈不變式證明:

我們可以斷言:對於任意 x < i ,a[i] != v為真,在迴圈開始之前和迴圈的每一次迭代以及迴圈結束後,都成立。

初始化:此時,x < 1, a[x]超出了陣列邊界,所以不存在為v的元素。

保持:如果 a[i] = v成立,那麼x < i時,a[i] != v;反之,也成立

結束:很顯然,我們的斷言也是成立的。

另外,所謂「迴圈不變式」就是,某個斷言,在進入迴圈之前和離開迴圈之後都為真。

參考:維基百科:

《演算法導論》習題2 1 3

考慮以下查詢問題 輸入 n個數的乙個序列a 和乙個值 v 輸出 下標i使得 v a i 或者當 v 不在 a中時,v 為特殊值nil。寫出線性查詢的偽 它掃瞄整個序列來查詢 v。使用乙個迴圈不變式來證明你的演算法是正確的。確保迴圈不變式滿足三條必要的性質。偽 find key a,v fori 1 ...

演算法導論課後習題第二章(1)

練習 2.1 1 以圖 2 2 為模型,說明 insertion sort 在陣列 a 31,41,59,26,41,58 上的 執行過程。2.1 2 重寫過程 insertion sort,使之按非公升序 而丌是按非降序 排序。insertion sort a 1 for j 2 to lengt...

演算法導論 習題 5 4 1

題 乙個房間裡必須要有多少人,才能讓某人和你生日相同的概率至少為1 2?必須要有多少人,才能讓至少兩個人生日為7月4日的概率大於1 2?解 1.假設一年有n 365 天,房間裡面有x人 不算自己 為求某人與自己生日相同,可求其反面,即房間裡面沒人跟自己生日相同,他們每個人生日可以在n天中選擇除去我生...