排序算法——常見排序算法彙總

排序(Sort)是將一組數據按照一定的大小先後順序進行排列。排序算法是最基本的算法,但是在實際應用場景中檔數據量非常龐大的時候往往面臨一些困難,因此需要根據具體問題選擇最合適的高效的排序算法。


排序算法有很多種,每一種排序算法都各有優劣。常見的包括交換排序,選擇排序,插入排序,合併排序,一般這些排序過程都是直接在內存中完成,統稱爲內排序。而對於一些大的文件,由於內存有限,不能一次性在內存中直接完成,需要將大文件劃分爲若干部分,然後分別讀入排序,經過多次處理完成整個排序過程,這種情況下的排序稱爲外排序

下表列舉了內排序中常見的一些排序算法,算法的使用場景,複雜度:

類別

名稱

摘要

複雜度

內排序 交換排序 冒泡排序  冒泡排序算法比較簡單容易理解,若初始狀態基本有序(指正序),可以採用冒泡排序,但不適合於規模較大且亂序的場景。 O(N2
雞尾酒排序 冒泡排序的改進算法 O(N2
快速排序  採用分治的思想,平均排序效率高,在帶排序數據量較大時多數情況下采用快速排序能取得較好的效果。 O(N*log2N)
選擇排序 選擇排序 算法簡單,容易理解,但是非常慢的,即使是在最好的情況下都需要二次方時間。 O(N2
堆排序  算法效率高,而且在最好、最壞、平均情況下算法效率基本穩定。 O(N*log2N)
插入排序 插入排序  不適合對於數據量比較大的排序應用,如果小規模數據需要排序並且初始數據幾乎是有序的,插入排序是一個不錯的選擇。 O(N2
希爾排序  插入排序的改進算法。 O(N3/2
合併排序 歸併排序 採用了分治的思想,將兩個(或以上)有序表合併成一個新的有序表,算法高效,但需要額外存儲空間開銷。 O(N*log2N)
其他 計數排序

桶排序
適用於排序規模較大,數據比較集中

適用於排序規模較大,數據比較集中,分佈均勻
O(N)
     
外排序

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