排序算法选择准则
(必看)選擇哪種排序算法,先參考這個網站查看排序速度演示https://www.toptal.com/developers/sorting-algorithms/
各種排序詳解可以參考http://sjjp.tjuci.edu.cn/sjjg/datastructure/ds/web/paixu/paixu8.1.1.1.htm
每種排序算法都各有優缺點。因此,在實用時需根據不同情況適當選用,甚至可以將多種方法結合起來使用。
選擇排序算法的依據
影響排序的因素有很多,平均時間復雜度低的算法并不一定就是最優的。相反,有時平均時間復雜度高的算法可能更適合某些特殊情況。同時,選擇算法時還得考慮它的可讀性,以利于軟件的維護。一般而言,需要考慮的因素有以下四點:
1.待排序的記錄數目n的大小;
2.記錄本身數據量的大小,也就是記錄中除關鍵字外的其他信息量的大小;
3.關鍵字的結構及其分布情況;
4.對排序穩定性的要求。
設待排序元素的個數為n.
1)當n較大,則應采用時間復雜度為O(nlog2n)的排序方法:快速排序、堆排序或歸并排序序。
?? 快速排序:是目前基于比較的內部排序中被認為是最好的方法,當待排序的關鍵字是隨機分布時,快速排序的平均時間最短;
?????? 堆排序 :? 如果內存空間允許且要求穩定性的,
?????? 歸并排序:它有一定數量的數據移動,所以我們可能過與插入排序組合,先獲得一定長度的序列,然后再合并,在效率上將有所提高。
2)? 當n較大,內存空間允許,且要求穩定性 =》歸并排序
3)當n較小,可采用直接插入或直接選擇排序。
??? 直接插入排序:當元素分布有序,直接插入排序將大大減少比較次數和移動記錄的次數。
??? 直接選擇排序 :元素分布有序,如果不要求穩定性,選擇直接選擇排序
5)一般不使用或不直接使用傳統的冒泡排序。
6)基數排序
它是一種穩定的排序算法,但有一定的局限性:
1、關鍵字可分解。
2、記錄的關鍵字位數較少,如果密集更好
3、如果是數字時,最好是無符號的,否則將增加相應的映射復雜度
轉載于:https://www.cnblogs.com/xinlovedai/p/6225038.html
總結
- 上一篇: Python之路【第二篇】:Python
- 下一篇: 解决JSP页面获取的数据库数据乱码问题