先看圖:
2.三種簡單排序演算法簡單,但是效率低下;高階排序在簡單排序基礎上優化,演算法複雜,換取的是效能提高,同時可能需要更多的輔助空間。
3.快速排序和歸併排序都使用了分治和遞迴,所以面試時被問到的機會比較高,尤其是快速排序。
4.從時間效能上看,快速排序是所有排序演算法中實際效能最好的,然而快速排序在最壞情況下(資料基本有序)的時間效能不如堆排序和歸併排序,
並且空間複雜度高,所以更適合資料不大的情況。
5.堆排序在任何情況下,其時間複雜度為 ο(n log n)。這相對於快速排序而言是堆排序的最大優點。
堆排序在元素較少時由於消耗較多時間在初始建堆上,因此不值得提倡,然而當元素較多時還是很有效的排序演算法
6.與快速排序和堆排序相比,歸併排序的優點是它是一種穩定的排序方法,最壞情況下時間效能好。
7.從方法穩定性上來看,大多數時間複雜度為ο(n2 )的排序均是穩定的排序方法,除簡單選擇排序之外。
而多數時間效能較好的排序方法,例如快速排序、堆排序、希爾排序都是不穩定的
8.基於比較的排序的時間複雜度下限是 ω(nlogn),即這已經是最高的效率了。
9.如果在面試中有面試官要求你寫乙個o(n)時間複雜度的排序演算法,你千萬不要立刻說:這不可能!
使用非比較的排序(計數排序、基數排序)可以達到線性時間o(n)複雜度的排序,
只不過有前提條件,就是待排序的數要滿足一定的範圍的整數,而且可能需要較多輔助空間。
10.需要結合具體的需求和場景來選擇甚至組合使用。才能達到高效穩定的目的。沒有最好的排序,只有最適合的排序。
常用排序演算法比較
不穩定 選擇排序 selection sort o n2 快速排序 quicksort o nlogn 平均時間,o n2 最壞情況 對於大的 亂序串列一般認為是最快的已知排序 堆排序 heapsort o nlogn 希爾排序 shell sort o nlogn 基數排序 radix sort ...
DS 常用排序演算法比較
1.穩定性比較 插入排序 氣泡排序 二叉樹排序 二路歸併排序及其他線形排序是穩定的 選擇排序 希爾排序 快速排序 堆排序是不穩定的 2.時間複雜性比較 插入排序 氣泡排序 選擇排序的時間複雜性為o n2 其它非線形排序的時間複雜性為o nlog2n 線形排序的時間複雜性為o n 3.輔助空間的比較 ...
常用排序演算法總結(2) 非比較排序演算法
主要有氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。在一定條件下,它們的時間複雜度可以達到o n 需要三個陣列 待排序陣列 int arr new int 輔助計數陣列 int help new int max min 1 該陣列大小為待排序陣列中的最大值減最小值 1 輸出陣列 int...