個人學習《演算法導論》筆記 演算法基礎(1)插入排序

2022-09-14 01:00:15 字數 823 閱讀 4087

插入排序在我們生活中很常見,比如玩撲克牌,左手拿牌,右手取排。從第1張牌開始,左手的撲克牌按照大小順序對號入座,構成乙個暫時的有序陣列a。這時,右手從桌子上取到的一張牌,相當於陣列的乙個元素,記作b。桌子上還未取的牌組成了乙個無序陣列c。我們可以把[a,b,c]看作乙個整體的陣列m,那麼問題轉換為常見到的對陣列m中的各個元素進行插入排序。

這樣考慮插入排序,相信會很好理解。

(1)《演算法導論》給出的偽**如下:

(2)根據偽**,我們編寫c++程式來實現,基本是照搬,注釋也寫得很清楚。

1 #include 2

using

namespace

std;

3int

main()

412 cout <

13//

開始排序

14for(j=1;j<10;j++)

1523 a[k+1]=b;//

跳出while迴圈,移位結束,將b插入停止位 24}

25//

輸出資料

26for(n=0;n<10;n++)

2730

return0;

31 }

(3)排序的選擇

部落格上有大神對於插入排序與選擇排序運算時間的討論,結論:在大部分有序的情況下插入排序是效率最高的演算法。

演算法導論學習筆記 1 基礎排序演算法

最近從頭開始學習演算法導論,作為乙個非計算機專業的學生,我的目的也就是為了找工作的時候能多點籌碼 但是學習過程中還是有不少收穫的,順便也能練習下python程式設計水平,因此記錄下學習內容 第一章是演算法基礎,這裡介紹了2種排序方法 插入排序和歸併排序 例子還算比較淺顯易懂。對於插入排序,可以用乙個...

演算法導論學習筆記 (1)

乙個acm若菜,趁著acm淡季,開始學習演算法導論了,經過一年的acm學習,逐漸的發現,學東西,深入才是王道,以前學習乙個演算法,總是看懂了就開始做題,到後來才發現很多題目,會演算法,卻不知道是用這個演算法,這就是演算法理解的不到位的後果,從今天開始,定下目標 1.深入系統的學習演算法,2.學會紙上...

《演算法導論》學習筆記(1)

時間複雜度 time complexity 0,1,1,2,3,5,8,13,21,34 數列中每個數都是其兩個直接前項的和。f nf fn 的生成規則 f n left f f n 1 1 n 1 0 n 0 end right.fn fn 1 fn 1 10 n 1n 1n 0 fibonacc...