演算法基礎之排序篇

2021-09-01 09:48:46 字數 748 閱讀 1572

排序(sorting)是計算機程式設計中的一種重要操作,它的功能是將乙個資料元素(或記錄)的任意序列,重新排列成乙個關鍵字有序的序列。

排序是演算法裡面最基礎的東西,用到的地方很多,比如各種榜單,各類搜尋等。排序的方法也很多,下面一起回顧一下一些通用的排序方法。

排序演算法一般考慮穩定性平均時間複雜度空間複雜度

穩定性:說乙個排序是穩定的,就是當有兩個有相等數a和b,且在原本的序列中a出現在b之前,在排序過的序列中a也將會是在b之前

平均時間複雜度:

時間複雜度與程式的語句的執行次數有關。如果語句的執行次數與序列的大小沒有關係時,稱為o(1)。

常數階o(1),對數階o(log2n),線性階o(n), 線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),..., k次方階o(n^k),指數階o(2^n)

空間複雜度:程式執行中消耗的額外空間量

1、插入排序

2、氣泡排序

3、選擇排序

4、快速排序

5、堆排序

6、歸併排序

7、基數排序

8、希爾排序

9、拓撲排序

10、錦標賽排序

先定義乙個交換函式,後面的排序會用到

public void swap(int data, int i, int j)

演算法基礎之排序篇 氣泡排序

1 演算法描述依次比較相鄰的數劇,將小的數排前面,大的排後面。操作步驟 1 從第乙個元素開始,依次與後乙個數比較,小數放前,大數放後,結果是最大的放到了最後。2 對前n i個數重複 1 i從1至n 2,n為原序列大小。2 圖例 3 public void sort int data 4 穩定性及複雜...

演算法基礎之排序篇 希爾排序

1 演算法描述希爾排序是一種遞減增量排序,當增量等於1的時候,就成了插入排序,因此希爾排序的最後一步就是普通的插入排序。操作步驟 1 選擇步長di 1 di n 對待排序列進行分割。所有距離為di的資料分到乙個組。2 對每乙個組進行插入排序。3 遞減步長,重複 1 2 直到步長等於1 2 圖例 3 ...

演算法基礎之排序篇 氣泡排序

1 演算法描述依次比較相鄰的數劇,將小的數排前面,大的排後面。操作步驟 1 從第乙個元素開始,依次與後乙個數比較,小數放前,大數放後,結果是最大的放到了最後。2 對前n i個數重複 1 i從1至n 2,n為原序列大小。2 圖例 3 public void sort int data 4 穩定性及複雜...