演算法基礎1 插入排序

2021-07-11 08:53:21 字數 926 閱讀 8479

一、插入排序

在許多經典的書籍中,插入排序的演算法涉及到兩張牌:1、遞迴牌;2、當前牌。

具體的視覺化的步驟如下圖:

上圖即為插入排序基本的實現過程。

1)key與遍歷集合中的每乙個元素進行比較。

key=a[j];

i=j-1; //往左遍歷

2)尋找插入的位置

while i>0 and a[i]>key

a[i+1]=key;

這裡最後為什麼取a[i+1]=key呢?

很顯然,因為key遍歷的termination終止的時候,它遍歷完所有的元素,又執行了一遍i=i-1;所以最後的位置,實際情況是key越界了,超出了可以允許的邊界,所以我們取a[i+1]=key,讓其成功插入所在的位置。

二、計算機中還涉及到基本的進製問題。

把兩個二進位制位數加起來,分別儲存在兩個n元陣列a和b中,這兩個整數的和按造二進位制的形式儲存在乙個(n+1)元陣列c中,可以這樣來分析。

關於二進位制數的進製問題,大多都可以轉換為mod 2來求解。

這裡用迴圈的遍歷,值得注意的是,迴圈結束的時候,要看看第c[n+1]是否等於一

這裡寫**

for (i=1;i

binary(a,b,c)

add_a_b[1]=0;

for i=1 to n

if add_a_b[j]=1

c[n+1]=1;

演算法(1)插入排序

最近在看 演算法導論 想著將其中涉及到的演算法都實現一遍,這是第一篇,也是剛剛開始。插入排序的演算法大致是這樣的,好比打牌,將桌上的牌在手上實現排序。1.從桌上拿一張牌 2.從後向前與手中的牌面大小進行比較。若相比更小,則說明還沒有到插入的位置,手上的此牌右移一位。3.若相比大,則插入到此牌的前一張...

排序演算法(1) 插入排序

輸入 n個數的乙個序列 a1,a2 an 輸出 輸入序列的乙個排序 a1,a2,an 滿足a1 a2 an。首先,對於少量元素的排序,插入排序是一種有效的演算法。舉個生動的例子,插入排序就像我們手裡剛剛分到的撲克牌,亂序。我們會將排由左到右進行整理,由小到大排序。待排序列 5 4 3 9 7 5 3...

排序演算法1 插入排序

插入排序思想 每一步將乙個待排序的元素,按期排序碼的大小,插入到前面已經排好序的一組元素的合適位置上去,知道元素插完。插入排序分為直接插入排序,和優化後的二分插入排序,我們先看第一種 基本思想 當我們插入第i i 1 個元素時,前面的所有元素已經排好序,此時我們使用當前元素從後向前比較,直到找到乙個...