收集一波十大算法動(dòng)態(tài)圖

前言:十大算法歸類(lèi)及對(duì)比圖

tips:無(wú)代碼展示,請(qǐng)?jiān)诤竺鎱⒖兼溄幼约赫遥。。?/p>

十大算法分類(lèi)圖
十大算法對(duì)比圖

1.冒泡排序(Bubble Sort)(鄰近對(duì)比 - 你行你上,no can't no...)

冒泡排序是一種簡(jiǎn)單的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果它們的順序錯(cuò)誤就把它們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端。(相鄰對(duì)比交換位置)

冒泡排序動(dòng)態(tài)圖

2.選擇排序(Selection Sort)(選擇最大或最小 - 最菜的出來(lái))

選擇排序(Selection-sort)是一種簡(jiǎn)單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最?。ù螅┰?,然后放到已排序序列的末尾。以此類(lèi)推,直到所有元素均排序完畢。(拿出最大或最小,然后在剩余中再拿最大或最小)


選擇排序動(dòng)態(tài)圖

3.插入排序(Insertion Sort)(未排序插已排序 - 插班生)

插入排序(Insertion-Sort)的算法描述是一種簡(jiǎn)單直觀的排序算法。它的工作原理是通過(guò)構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。插入排序在實(shí)現(xiàn)上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過(guò)程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。(將未排序的,在已排序中找到位置插進(jìn)去)

插入排序動(dòng)態(tài)圖

4.希爾排序(Shell Sort)(插入排序升級(jí)版- 先分組再插入)

希爾排序的核心在于間隔序列的設(shè)定。既可以提前設(shè)定好間隔序列,也可以動(dòng)態(tài)的定義間隔序列。動(dòng)態(tài)定義間隔序列的算法是《算法(第4版》的合著者Robert Sedgewick提出的。

希爾排序動(dòng)態(tài)圖
希爾排序動(dòng)態(tài)圖

圖來(lái)源

漫畫(huà):什么是希爾排序?

5.歸并排序(Merge Sort)(兩兩比后四人組排序,四四比后八人組排序。。- 比賽制)

 歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。歸并排序是一種穩(wěn)定的排序方法。將已有序的子序列合并,得到完全有序的序列;即先使每個(gè)子序列有序,再使子序列段間有序。若將兩個(gè)有序表合并成一個(gè)有序表,稱(chēng)為2-路歸并。


歸并排序動(dòng)態(tài)圖
歸并排序動(dòng)態(tài)圖

6.快速排序(Quick Sort)(冒泡排序的改進(jìn)版)

快速排序的基本思想:?通過(guò)一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列?


快速排序動(dòng)態(tài)圖
快速排序動(dòng)態(tài)圖

漫畫(huà):什么是快速排序?(完整版)

7.堆排序(Heap Sort)

堆排序(Heapsort)是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。堆積是一個(gè)近似完全二叉樹(shù)的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì):即子結(jié)點(diǎn)的鍵值或索引總是小于(或者大于)它的父節(jié)點(diǎn)。


堆排序動(dòng)態(tài)圖

8.計(jì)數(shù)排序(Counting Sort)

計(jì)數(shù)排序(Counting sort)是一種穩(wěn)定的排序算法。計(jì)數(shù)排序使用一個(gè)額外的數(shù)組C,其中第i個(gè)元素是待排序數(shù)組A中值等于i的元素的個(gè)數(shù)。然后根據(jù)數(shù)組C來(lái)將A中的元素排到正確的位置。它只能對(duì)整數(shù)進(jìn)行排序。


計(jì)數(shù)排序動(dòng)態(tài)圖
計(jì)數(shù)排序動(dòng)態(tài)圖

9.桶排序(Bucket Sort)

桶排序 (Bucket sort)的工作的原理:假設(shè)輸入數(shù)據(jù)服從均勻分布,將數(shù)據(jù)分到有限數(shù)量的桶里,每個(gè)桶再分別排序(有可能再使用別的排序算法或是以遞歸方式繼續(xù)使用桶排序進(jìn)行排


桶排序圖解
桶排序動(dòng)態(tài)圖

10.基數(shù)排序(Radix Sort)

基數(shù)排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次類(lèi)推,直到最高位。有時(shí)候有些屬性是有優(yōu)先級(jí)順序的,先按低優(yōu)先級(jí)排序,再按高優(yōu)先級(jí)排序。最后的次序就是高優(yōu)先級(jí)高的在前,高優(yōu)先級(jí)相同的低優(yōu)先級(jí)高的在前?;鶖?shù)排序基于分別排序,分別收集,所以是穩(wěn)定的。


基數(shù)排序動(dòng)態(tài)圖
基數(shù)排序動(dòng)態(tài)圖

11.參考鏈接(代碼可在鏈接中尋找)

十大經(jīng)典排序算法(動(dòng)圖演示)

數(shù)據(jù)結(jié)構(gòu)與算法系列--十大排序(附動(dòng)態(tài)圖解)

十大經(jīng)典排序算法動(dòng)畫(huà),看我就夠了!

優(yōu)雅的 JavaScript 排序算法(ES6)

圖解桶排序

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容