十大經典排序演算法動畫,看我就夠了!
點選上方“程式人生”,選擇“置頂公眾號”
第一時間關注程式猿(媛)身邊的故事
圖片源自:モブサイコ100
作者
程式設計師小吳
如需轉載,請聯絡我們。
在前面的章節中詳細的講解分析了十大經典排序演算法,本文將進行一個大總結。
Tip 為了演示更加清楚,本文中所有的動畫都放慢了速度,因此GIF大小對比之前會有所增大,圖片載入速度會變慢。
排序演算法是《資料結構與演算法》中最基本的演算法之一。
排序演算法可以分為內部排序和外部排序。
內部排序是資料記錄在記憶體中進行排序。
而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。
常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排序、堆排序、基數排序等。
用一張圖概括:
關於時間複雜度:
平方階 (O(n2)) 排序 各類簡單排序:直接插入、直接選擇和氣泡排序。
線性對數階 (O(nlog2n)) 排序 快速排序、堆排序和歸併排序;
O(n1+§)) 排序,§ 是介於 0 和 1 之間的常數。 希爾排序
線性階 (O(n)) 排序 基數排序,此外還有桶、箱排序。
關於穩定性:
穩定的排序演算法:氣泡排序、插入排序、歸併排序和基數排序。
不是穩定的排序演算法:選擇排序、快速排序、希爾排序、堆排序。
氣泡排序
選擇排序
插入排序
希爾排序
歸併排序
快速排序
堆排序
計數排序
桶排序
基數排序
文章思路開源專案地址:https://github.com/hustcc/JS-Sorting-Algorithm,整理人 hustcc。
- The End -
「若你有原創文章想與大家分享,歡迎投稿。」
加編輯微信ID,備註#投稿#:
程式 丨 druidlost
2018 中國大資料技術大會
◆
BDTC 2018
◆
BDTC 2018中國大資料技術大會攜主題“大資料新應用”再度強勢來襲。本次大會由華東師範大學副校長、教授周傲英,百度商業智慧實驗室主任熊輝,阿里巴巴副總裁李飛飛三位會議主席對大會內容把關,多位兩院院士參與指導,由最瞭解行業痛點的一線從業者為同行打造。
掃描下方二維碼或點選【閱讀原文】快速購票。現在購票還有機會獲得大資料圖書一本(中國科學院院士梅巨集主編的《大資料導論》或華中科技大學教授金海主編的《大資料處理》),數量有限!
推薦閱讀:
print_r('點個贊吧');
var_dump('點個贊吧');
NSLog(@"點個贊吧!");
System.out.println("點個贊吧!");
console.log("點個贊吧!");
print("點個贊吧!");
printf("點個贊吧!\n");
cout << "點個贊吧!" << endl;
Console.WriteLine("點個贊吧!");
fmt.Println("點個贊吧!");
Response.Write("點個贊吧");
alert(’點個贊吧’)