演算法導論 第二章 插入排序

2022-04-29 15:57:13 字數 1176 閱讀 8474

1. 插入排序類似於整理撲克牌(排列好順序的撲克和待排序的撲克);

2. 插入排序(insertion-sort)引數是乙個陣列a[1..n]共n個數,輸入的各個數字原地排序(sorted in place),分為排好序的和待排序的,每次取乙個待排序元素,找到插入的位置,插入已排好序的部分中。元素取完程式結束,複雜度為

o(n^2)

;3. 偽**如下:

insertion-sort(a) 

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序列加入的數值

4. 具體c**如下:

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 為例,插入排序的過程如...