總結一下不同的數據排序算法
首先,排序根據排序方式的不同分爲四大類:插入排序、選擇排序、交換排序、歸併排序
插入排序類: 直插排序 穩定 時間複雜度O(n^2)
希爾排序 不穩定 時間複雜度O(n^1.5)
選擇排序類: 簡單選擇排序 穩定 時間複雜度O(n^2)
堆排序 不穩定 時間複雜度O(nlogn)
交換排序類:冒泡排序 穩定 時間複雜度O(n^2)
快速排序 不穩定 時間複雜度O(nlogn) 空間複雜度O(logn)~O(n)
歸併排序類:歸併排序 穩定 時間複雜度O(nlogn) 空間複雜度O(n)
從時間複雜度來看,顯然堆排、快排、歸併要更好一些,而歸併排序犧牲了空間複雜度換取了穩定性的提升,在一些非常在乎穩定性的環境中用歸併排序是一個不錯的選擇。而在一些非常在意內存容量的環境中,幾乎沒有多佔用堆排序就顯得更好了。
相對於三種比較複雜的排序方法,如果數據量很小的話那麼冒泡排序、直插排序來的更快一些
假如說需要排序的每個數據本身非常龐大,那麼可以選擇交換次數比較少的簡單選擇排序。
不受初始數據狀態影響的排序方式有:簡單選擇排序、堆排序、歸併排序