十大排序算法總結(附java實現)

定義

  排序 是計算機內部經常進行的一項操作,目的是將一組無序的序列調整爲一組有序的序列。Excel中將數據按照名稱進行升序降序排列就是一種常見的排序操作。

相關概念

  • 時間複雜度:反映操作次數(計算量)隨數據長度的變化規律,是數據規模的函數,用O()O(·)表示。
  • 空間複雜度:用來度量執行算法所需的存儲空間隨數據規模的變化情況,也用O()O(·)表示。
  • 穩定性:對於兩個相等的元素 aabb,如果排序算法不會改變他們的相對位置,則稱排序算法是穩定的,否則這個算法就是不穩定的。

分類

  根據排序過程是否需要使用外部存儲空間可以將排序算法分爲內部排序外部排序

  根據排序算法的複雜度和是否是基於對元素進行比較進行排序又可以將算法分爲非線性時間比較類排序線性時間非比較類排序

  • 非線性時間比較類排序:顧名思義就是根據比較來確定元素的排列順序的排序算法,時間複雜度最低爲(O(nlogn))(O(nlogn))
  • 線性時間非比較類排序:不通過比較元素的相對大小來確定元素的排列順序的算法,時間複雜度可以突破對數級別以線性時間運行。

比較

  表中 kk 表示所需的桶(bucket)的個數——對於計數排序、桶排序和基數排序三種排序算法需要額外的**“buckets”**來輔助排序。

具體算法介紹

下面具體介紹了每一種排序算法:

(1) 簡單選擇排序

(2) 冒泡排序

(3) 插入排序

(4) 希爾排序

(5) 歸併排序

(6) 快速排序

(7) 堆排序

(8) 計數排序/桶排序/基數排序

  所有的排序都默認是按照從大到小的順序進行排序,完整的代碼可以在我的github上下載。此外,文章中的所有演示動圖都來自於互聯網。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章