史上最全排序演算法總結!建議收藏
作者 | 鐵猴
責編 | 屠敏
出品 | CSDN 部落格
簡介
本文對常見排序演算法進行總結。
排序演算法
氣泡排序
該演算法比較簡單,幾乎所有語言涉及到演算法時,都會涉及到冒泡演算法。
演算法思路:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
選擇排序
每次選擇一個最大(小)的,直到所有元素都被輸出。
可參考:https://blog.csdn.net/sun7545526/article/details/85165618
直接插入排序
插入排序的基本方法是:每一步將一個待排序的元素,按其排序碼的大小,插入到前面已經排好序的一組元素的適當位置上去,直到元素全部插入為止
演算法思路:
當插入第i(i >= 1)時,前面的V[0],V[1],……,V[i-1]已經排好序。這時,用V[I]的排序碼與V[i-1],V[i-2],…的排序碼順序進行比較,找到插入位置即將V[i]插入,原來位置上的元素向後順移。
以[21,25,49,25,16,08]為例,排序過程如下所示:
在小規模資料集或是基本有序時,該演算法效率較高。
希爾排序
先對資料進行預處理,使其基本有序,然後再用直接插入排序演算法排序。
詳細過程可參考:https://blog.csdn.net/eric_sunah/article/details/103080731
快速排序
利用“分而治之”的思想對集合進行排序
可參考:https://blog.csdn.net/sun7545526/article/details/85165742
堆排序
說堆排序前,先說下啥是堆。
堆:堆是滿足下列性質的完全二叉樹:
每個節點都大於或是等於其左右孩子節點的值,稱為大頂堆
每個節點都小於或是等於其左右孩子節點的值,稱為小頂堆
接下來說下堆是如何做排序的,思路如下(以大頂堆為例):
根節點是整個堆的最大值,將它移走。
將剩餘n-1個節點重新構造成一個堆,再將根節點移走
重複執行1,2。直到沒有節點可移動,就生成了有序序列。
該算法有兩個需要解決問題:
如何將一個無序序列構建一個堆。
移除根節點後,如何用剩餘的節點重建堆。
詳細介紹參見:https://blog.csdn.net/eric_sunah/article/details/103081878
歸併排序
歸併排序(MERGE-SORT)是利用歸併的思想實現的排序方法,該演算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞迴求解,而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。
詳細介紹參見:https://blog.csdn.net/eric_sunah/article/details/103082607
總結
分類總結:
時間複雜度總結:
版權宣告:本文為CSDN博主「鐵猴」加入原力計劃的原創文章。
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- 史上最全執行緒池超詳解(建議收藏)執行緒
- 演算法排序:史上最全2演算法排序
- 史上最全:PostgreSQL DBA常用SQL查詢語句(建議收藏學習)SQL
- (建議收藏)2020最新排序演算法總結:冒泡、選擇、插入、希爾、快速、歸併、堆排序、基數排序排序演算法
- 基礎篇:java GC 總結,建議收藏JavaGC
- 【史上最全】Hadoop 核心 - HDFS 分散式檔案系統詳解(上萬字建議收藏)Hadoop分散式
- 年度文章集合 | 最全微前端集合【建議收藏】前端
- 純乾貨!2023年最全外貿獲客方式彙總!建議收藏
- 史上最全 Redis 高可用解決方案總結Redis
- 【建議收藏】Go語言關鍵知識點總結Go
- 吐血總結|史上最全的MySQL學習資料!!MySql
- 最棒 Spring Boot 乾貨總結(超詳細,建議收藏)Spring Boot
- 史上最全關於sorted函式的10條總結函式
- 9大效能最佳化經驗總結,強烈建議收藏!
- 微服務寫的最全的一篇文章,建議收藏~微服務
- 史上最全單連結串列的增刪改查反轉等操作彙總以及5種排序演算法(C語言)排序演算法C語言
- 排序演算法全總結排序演算法
- 這些大檔案傳輸工具總結,建議外貿人士收藏
- 一口氣總結,25 個 Linux 效能監控工具,建議收藏Linux
- 最常用 150 個Linux命令彙總(建議收藏)Linux
- 簡單網路管理協議SNMP(史上最全)協議
- 這可能是史上最全Redis高可用解決方案總結Redis
- 常用排序演算法總結(1)排序演算法
- 常用排序演算法總結(2)排序演算法
- 常見排序演算法總結排序演算法
- 牛逼了,史上 MySQL 最全最佳化指南,快收藏起來!MySql
- 【資源】史上最全資料集彙總
- PHP 排序演算法原理及總結PHP排序演算法
- 彙總 | AR眼鏡開發資源合集(建議收藏)
- Java開發基礎知識學習總結之(上)-王者筆記建議收藏Java筆記
- 『演算法』之 初級排序演算法總結演算法排序
- 乾貨!這可能是最全的IntelliJ IDEA For Mac快捷鍵說明,建議收藏!IntelliJIdeaMac
- 最全MyBatis核心配置檔案總結,可以作為工具先收藏了MyBatis
- 【建議收藏】好用的API大全API
- 《演算法筆記》5. 字首樹、桶排序、排序演算法總結演算法筆記排序
- 常用的比較排序演算法總結排序演算法
- 幾種常見排序演算法總結排序演算法
- ElasticSearch 叢集基本概念及常用操作彙總(建議收藏)Elasticsearch