排序(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 穩定性及複雜...