內部排序的演算法的時間複雜度,空間複雜度,穩定性的記憶方法:
(1) 時間複雜度:
以平均時間複雜度o(nlogn) 的速度排序快速排序、歸併排序、堆排序,
希爾排序一般為o(n^3/2), 差的話就為o(n^2)
冒泡冒的好是o(n) ,冒得不好就是o(n^2)
直接插入插得好,就是o(n) ,直接插入插得不好就是o(n^2)
在所有同量級(o(nlogn) )的排序演算法中,快排平均效能最好,若初始關鍵字有序或基本有序,快排蛻變為氣泡排序,此時演算法平均複雜度為o(n^2)
(2) 空間複雜度:記住特殊的三個:
快速排序:o(logn) ;
歸併排序:o(n)
基數排序:o(d(n+rd))
堆排序、直接插入排序、氣泡排序、直接選擇排序、希爾排序:只需要乙個記錄大小的輔助空間
(3) 穩定性:快速排序、希爾排序、簡單選擇排序、堆排序不穩定,其他的全是穩定的。
簡單排序一般是穩定排序,簡單選擇排序除外
複雜排序一般不穩定,歸併排序除外
結論:1. 待排序的記錄數目n 較小時,可採用插入排序和選擇排序。由於直接插入排序所需的記錄移動操作較直接選擇排序多,因而當記錄本身資訊量較大時,用直接選擇排序方法較好
。2. 若待排序記錄關鍵字基本有序 ,則適合採用
直接插入排序或者氣泡排序 。
3. 當n 很大而且關鍵字的位數較少時,採用鏈式基數排序較好。
4. 若n 較大,則採用時間複雜度為o(nlogn) 的排序方法:快速排序、堆排序或歸併排序。快速排序是目前內部排序方法中最好的方法,當待排序的關鍵字為隨機分布時,快速排序的平均執行時間最短 ;但堆排序只需1 個輔助儲存空間,並且不會出現在快速排序中可能出現的最壞情況。這兩種排序方法都是不穩定的排序方法,若要求排序穩定,可選擇歸併排序。通常可將歸併排序和直接插入排序結合起來使用:先利用直接插入排序求得較長的有序子檔案,然後再兩兩歸併。因為直接插入排序是穩定的,所以改進的歸併排序是穩定的
文章出處:
09 排序1 排序
09 排序1 排序 25 分 給定n 個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 include include includeusing namespace std const int cutoff 1000...
09 排序1 排序
n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。資料2 11個不相同的整數,測試基本正確性 資料3 10 3個隨機整數 資料4 10 4個隨機整數 資料5 10 5個隨機整數 資料6 10 5個順序整數 資料7 10 5個逆序整數 資料8 10 5個基本有序的整數 資料9 10 5個隨機正...
09 排序1 排序
本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 資料1 只有1個元素 資料2 11個不相同的整數,測試基本正確性 資料3 103個隨機整數 資料4 104個隨機整數 資料5 105個隨機整數 資料6 105個順序整數 資料7 105個逆序整數 資料8 105個基本有序的...