一文搞定十大排序算法(动画图解)
一文搞定十大排序算法(動(dòng)畫(huà)圖解)
排序算法是測(cè)試開(kāi)發(fā)技術(shù)面試中的??碱}目,本文用動(dòng)畫(huà)圖解面試必會(huì)十大排序算法,由淺入深、形象記憶 ,再也忘不掉。
排序基礎(chǔ)知識(shí)
排序的定義
排序 ,就是重新排列表中的元素,使表中的元素滿足按關(guān)鍵字遞增或遞減的過(guò)程。為了査找方便,通常要求計(jì)算機(jī)中的表是按關(guān)鍵字有序的 。
排序的確切定義如下:
輸入: n個(gè)記錄 R1
,R2,R3…Rn, 對(duì)應(yīng)的關(guān)鍵字為 K1,K2,K3…Kn 輸出: 輸入序列的一個(gè)重排R1’
,R2’,R3’…Rn’, 使得有K1’ K2’ K3’… Kn’ (其中 可以換成其它的比較大小符號(hào))。算法的穩(wěn)定性 :
若待排序表中有兩個(gè)元素 Ri 和 Rj,其對(duì)應(yīng)的關(guān)鍵字 keyi = kcyj , 且在排序前 Ri 在 Rj 的前面。使用某一排序算法排序后 ,Ri 仍然在 Rj 的前面盡的前面 ,則稱這個(gè)排序算法是穩(wěn)定的 。否則稱排序算法是不穩(wěn)定的。
需要注意的是 ,算法是否具有穩(wěn)定性并不能衡量—個(gè)算法的優(yōu)劣,它主要針對(duì)算法的性質(zhì)進(jìn)行描述。只需舉出一組關(guān)徤字的實(shí)例,即可說(shuō)明一個(gè)算法是不穩(wěn)定的。
時(shí)間復(fù)雜度 :[1](來(lái)自百度百科)
算法中基本操作重復(fù)執(zhí)行的次數(shù)是問(wèn)題規(guī)模n的某個(gè)函數(shù),用 T(n) 表示,若有某個(gè)輔助函數(shù) f(n) ,使得 T(n)/f(n) 的極限值(當(dāng)n趨近于無(wú)窮大時(shí))為不等于零的常數(shù),則稱 f(n) 是 T(n) 的同數(shù)量級(jí)函數(shù)。記作 T(n)=O(f(n)) ,稱 O(f(n)) 為算法的漸進(jìn)時(shí)間復(fù)雜度