算法總結
詳細十大排序算法:https://www.cnblogs.com/WindSun/category/1375215.html
圖片名詞解釋:
- n: 數據規模
- k: “桶”的個數
- In-place: 占用常數內存,不占用額外內存
- Out-place: 占用額外內存
算法的分類
比較和非比較的區別
常見的快速排序、歸並排序、堆排序、冒泡排序等屬於比較排序。在排序的最終結果里,元素之間的次序依賴於它們之間的比較。每個數都必須和其他數進行比較,才能確定自己的位置。
在冒泡排序之類的排序中,問題規模為n,又因為需要比較n次,所以平均時間復雜度為O(n²)。在歸並排序、快速排序之類的排序中,問題規模通過分治法消減為logN次,所以時間復雜度平均O(nlogn)。
比較排序的優勢是,適用於各種規模的數據,也不在乎數據的分布,都能進行排序。可以說,比較排序適用於一切需要排序的情況。
在冒泡排序之類的排序中,問題規模為n,又因為需要比較n次,所以平均時間復雜度為O(n²)。在歸並排序、快速排序之類的排序中,問題規模通過分治法消減為logN次,所以時間復雜度平均O(nlogn)。
比較排序的優勢是,適用於各種規模的數據,也不在乎數據的分布,都能進行排序。可以說,比較排序適用於一切需要排序的情況。
計數排序、基數排序、桶排序則屬於非比較排序。非比較排序是通過確定每個元素之前,應該有多少個元素來排序。針對數組arr,計算arr之前有多少個元素,則唯一確定了arr在排序后數組中的位置。
非比較排序只要確定每個元素之前的已有的元素個數即可,所有一次遍歷即可解決。算法時間復雜度O(n)。
非比較排序時間復雜度底,但由於非比較排序需要占用空間來確定唯一位置。所以對數據規模和數據分布有一定的要求。
非比較排序只要確定每個元素之前的已有的元素個數即可,所有一次遍歷即可解決。算法時間復雜度O(n)。
非比較排序時間復雜度底,但由於非比較排序需要占用空間來確定唯一位置。所以對數據規模和數據分布有一定的要求。
[原文:https://blog.csdn.net/hellozhxy/article/details/79911867]