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

2021-08-27 04:11:09 字數 1124 閱讀 2711

輸入:n個數的乙個序列(a1,a2……an)。

輸出:輸入序列的乙個排序(a1,a2,……,an),滿足a1<=a2<=……an。

首先,對於少量元素的排序,插入排序是一種有效的演算法。舉個生動的例子,插入排序就像我們手裡剛剛分到的撲克牌,亂序。我們會將排由左到右進行整理,由小到大排序。

待排序列

5 4 3 9 7 5 3 2 1

(1)第一次操作由第2個元素開始,跟第乙個元素比較,產生序列(前第乙個黑體元素為待排元素,下同)

44 5 3 9 7 5 3 2 1

(2)第二次操作由第三個元素開始,跟第二個元素比較,3<5,5向後移乙個單位,之後再跟第乙個元素比較3<4,4向後移乙個單位,產生序列

33 4 5 9 7 5 3 2 1

(3)第三次操作由第四個元素開始,跟第三個元素比較,9>5,停止比較,產生新的序列

93 4 5 9 7 5 3 2 1

(4)之後每次操作同上訴產生的新序列分別如下:

第五個元素操作後序列:73 4 5 7 9 5 3 2 1 

第六個元素操作後序列:53 4 5 5 7 9 3 2 1

第七個元素操作後序列:33 3 4 5 5 7 9 2 1

第八個元素操作後序列:22 3 3 4 5 5 7 9 1

第九個元素操作後序列:11 2 3 3 4 5 5 7 9

其演算法過程:

insertion_sort(a,n)

a[j+1]=key;

} }

其實現**:

#include 

#include

int insertionsort(int a[10],int n)

}return a[10];

}int main()

排序演算法1 插入排序

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

排序演算法 1 插入排序

插入排序的過程和平時打牌的時候給手裡的牌排序差不多 從牌桌上抽一張牌 把抽到的牌從右到左 或者從左到右 挨個和手裡的牌進行比較,當發現左邊的牌大一些,右邊的牌小一些,就將牌插入到該位置 重複執行步驟1,直到牌抽完了 include include 對範圍 first,last 的元素進行插入排序 p...

演算法(1)插入排序

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