排序(2)

下介紹經典排序算法的空間複雜度
O(1)
插入排序、選擇排序、冒泡排序(時間複雜度O(N^2))
推排序、希爾排序
O(logN)~O(N)
快速排序
O(N)
歸併排序
O(M)
計數排序、基數排序 M爲桶的數量

排序算法-穩定性
概念:假定待排序的記錄序列中,存在多個具有相同關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,稱這種排序算法是穩定的,否則稱爲不穩定的。

穩定的排序算法
冒泡排序、插入排序、歸併排序、計數排序、基數排序、桶排序

不穩定的排序算法
選擇排序、堆排序、快速排序、希爾排序

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

希爾排序交換位置,就會不穩定。

補充說明
1.排序算法無絕對優劣
算法效果取決於排序的元素。例如人身高,數值範圍小,可以選擇計數排序,但對於均勻分佈的整數,計數排序就不合適了。除非面試特別說明,否則理解爲均勻分佈。

2.爲何叫快速排序
快速排序並不代表它比堆排序和歸併排序優良。在最好的情況下,它的漸進複雜度與堆排序和歸併排序是相同的。只是它的常亮係數比較小。
算法效果取決於排序的元素。例如人身高,數值範圍小,可以選擇計數排序,但對於均勻分佈的整數,計數排序就不合適了。除非面試特別說明,否則理解爲均勻分佈。

3.工程上的排序
1、工程上是綜合排序
2、數組較小時,插入排序
3、數組較大時,快速排序或其它O(N*logN)的排序

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