2.1-1 以圖2-2為模型,說明insertion-sort在陣列a=上的執行過程。
31 31 41
31 41 59
26 31 41 59
26 31 41 58 59
2.1-2重寫過程insertion-sort,使之按非公升序(而不是非降序)排序。
2.1-3 考慮以下查詢問題:insertion-sort
for j=2
to a.length
a[i+1]=key
}
輸入:n個數的乙個序列a=和乙個值v。
輸出:下標i使得v=a[i]或者當v不在a中出現時,v為特殊值nil。
寫出線性查詢的偽**,它掃瞄整個序列來查詢v。使用乙個迴圈不變式來證明你的演算法是正確的。確保你的迴圈不變式滿足三條必要的性質。
迴圈不變式主要用來幫助我們理解演算法的正確性。關於迴圈不變式,我們必須證明三條性質:初始化:迴圈的第一次迭代之前,它為真。
保持:如果迴圈的某次迭代之前它為真,那麼下次迭代之前它仍為真。
終止:在迴圈終止時,不變式為我們提供乙個有用的性質,該性質有助於證明演算法是正確的。
2.1-4 考慮把兩個n位二進位制整數加起來的問題,這兩個整數分別儲存在兩個n元陣列a和b中。這兩個整數的和應按二進位制形式儲存在乙個(n+1)元陣列c中。請給出該問題的形式化描述,並寫出偽**。for(int i=0;i
length;i++)
else
}
對a[i]位和b[i]位相加,如果得2向前進一位(flag=1),c[i]=0。如果得1,c[i]=1+flag,flag=0。如果得0,c[i]=0+flag,flag=0。
flag=0;
for(int i==0;iif(a[i]==1&&b[i]==1)
else
if(a[i]==0&&b[i]==0)
else
else
}}
演算法導論 第二章 插入排序
1.插入排序類似於整理撲克牌 排列好順序的撲克和待排序的撲克 2.插入排序 insertion sort 引數是乙個陣列a 1.n 共n個數,輸入的各個數字原地排序 sorted in place 分為排好序的和待排序的,每次取乙個待排序元素,找到插入的位置,插入已排好序的部分中。元素取完程式結束,...
演算法導論(平話)第二章演算法基礎 插入排序
前言 對於作者這類學術很渣,算導簡直就是一本晦澀難懂的書,作者根據自己的有限的理解對每一章節做平話描述。插入排序 元素 序列 引數 原址 迭代 偽 此文不做專業名詞的闡述,意在幫助很多初次接觸的程式設計師用白話的方式理解插入排序。1.白話概念 從一堆東西中 可以是任何物質 乙個個取出,邊取邊按照一定...
演算法導論 第二章演算法基礎(1)插入排序
輸入 n個數的乙個序列 輸出 輸入序列的乙個排序 滿足 a1 a2 a n a prime 1 le a prime 2 le cdots le a prime n a1 a 2 an 插入排序原址排序輸入的數,演算法在陣列a aa中重排這些數,在任何時候,最多只有其中的常數個數字儲存在陣列外面。f...