演算法導論第一章練習 2 1

2021-10-11 22:11:38 字數 1352 閱讀 7299

#目錄

2.1-1

2.1-2

2.1-3

2.1-4

以圖2-2為模型,說明inserttion-sort在陣列a=<31, 41, 59, 26, 41, 58>上的執行過程

圖示更清楚

重寫過程insertion-sort,使之按非公升序(而不是降序)排序。

偽**如下

for j = 2 to a.length

key = a[j]

i = j -1

while(i > 0 && a[i] < key)

a[i+1] = a[i]

i = i -1

a[i+1] = key

python 實現

考慮以下查詢問題

輸入:n個數的乙個序列a=1, a2, … an> 和乙個是v

輸出:下標i使得v=a[i]或者當v不再a**現時,v 為特殊值null

寫出線性查詢的偽**。它掃瞄整個序列來查詢v。使用乙個迴圈不變式來證明你的演算法是正確的。確保你的迴圈不變式滿足三條必要的性質

for i = 0 to a.length

if v==a[i]

return i

python實現

考慮把兩個n 位二進位制整數加起來的問題,這兩個整數分別儲存在兩個n 元陣列a和b中。這兩個整數的和應按二進位制形式儲存在乙個(n+1)元陣列c中。請給出該問題的形式化描述,並寫出偽**。

本題就是在求兩個數的和,只是說這兩個數,是以二進位制形式儲存在陣列中的。我們要做的事情是,實現基礎的加法運算,並注意進製問題

carray = 0

for i=a.length -1 to 0

r= a[i] + b[i] + carray

carray = r /2

c[i+1] = r %2

if carray > 0

c[0]=1

python實現

歡迎到github點個star

演算法導論第一章

第一章 演算法在計算中的作用 1.1演算法 非形式地說,演算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。這樣,演算法就是把輸入轉換成輸出的計算步驟的乙個序列。若對每個輸入例項演算法都以正確的輸出停機,則稱該演算法是正確的,並稱正確的演算法解決了給定的計...

第一章 導論

c 是物件導向的高階語言,將客觀事物都看作物件,將同類物件進行抽象,形成類,類封裝起來只暴露介面,符合人類的思維方式。用源語言寫的,有待翻譯的程式 源程式通過翻譯程式加工以後生成的機器語言程式 連線目標程式以及庫中的某些檔案,生成乙個可執行檔案 加一位,0表示正,1表示負,符號絕對值表示的編碼,但是...

演算法導論筆記第一章

首先從別人的博文中看到乙個對演算法的最為簡單而又簡潔的理解 演算法 輸入 良好的計算過程 正確輸出。仔細想,就是這個樣子的。有時間,習慣了有問題就上網查詢,而漸漸使大腦變的遲鈍許多,遇到問題第一反應不是仔細想想而是想要去查查怎麼回事,這不是個好的習慣。要改正。下面是自己對習題的一些想法 1.1 1 ...