1. 插入排序類似於整理撲克牌(排列好順序的撲克和待排序的撲克);
2. 插入排序(insertion-sort)引數是乙個陣列a[1..n]共n個數,輸入的各個數字原地排序(sorted in place),分為排好序的和待排序的,每次取乙個待排序元素,找到插入的位置,插入已排好序的部分中。元素取完程式結束,複雜度為
o(n^2)
;3. 偽**如下:
insertion-sort(a)4. 具體c**如下:for j
to length(a)
do key
//insert a[j] into the sorted sequence a[1..j-1], a下標從1開始儲存資料,其中下標1~j-1的資料是排好序的
i while i > 0 and a[i] > key //
i>0是控制與j之前所有資料比較的次數,a[i]>key控制数字是從小到大排列,當拍好資料的數大於key時,互相顛倒
do a[i + 1]
i //換下乙個下標資料進行比較
a[i+1]
key比sorted序列的值都大,則key稱為下乙個sorted序列加入的數值
1 #include 2 #include 3執行截圖如下:4void insertsort(int
a)16
17 a[i + 1] =key;18}
19}2021
22int
main();
2526 printf("
a...\n");
27for(i = 0; i < 6; i++)
3031
insertsort(a);
3233 printf("
\nafter a...\n");
34for(i = 0; i < 6; i++)
3738 system("
pause");
39return0;
40 }
演算法導論(平話)第二章演算法基礎 插入排序
前言 對於作者這類學術很渣,算導簡直就是一本晦澀難懂的書,作者根據自己的有限的理解對每一章節做平話描述。插入排序 元素 序列 引數 原址 迭代 偽 此文不做專業名詞的闡述,意在幫助很多初次接觸的程式設計師用白話的方式理解插入排序。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...
用C 學《演算法導論》 第二章 插入排序
輸入 a1,a2,a3,an n個數 輸出 a1 a1 a2 a3 an a1 a1 a2 a3 an 思想 感覺和我們玩鬥地主一樣的感覺 在剛開始時,我們的手牌是空的,開局後,每抽到一張牌,我們把他按照順序插在適合的位置,為了找到合適的位置,我們需要一一與底牌比較。以陣列a 為例,插入排序的過程如...