又稱間接排序,排序時不調整元素的實際位置,而是定義乙個額外的陣列作為「表」(table)。根據元素的關鍵字大小來調整元素對應下標在表中的位置。
a[0]
[1][2]
[3][4]
[5][6]
[7]keyfd
cagb
hetable01
2345
67初始的乙個結構體陣列,需要根據key的大小來進行排序,但是這裡只調整table中下標的位置。表排序在調整下標的位置時可以使用其他的排序演算法,例如直接插入排序。
a[0]
[1][2]
[3][4]
[5][6]
[7]keyfd
cagb
hetable35
2170
46如果僅要求按順序輸出,則輸出:a[
tabl
e[0]
],a[
tabl
e[1]
],..
.,a[
tabl
e[n−
1]]
經過表排序後,得到了排好序的table陣列,但是如果需要調整元素的實際位置,那就需要物理排序。
struct element
// 物理排序過程 elements = 元素陣列, table = 表陣列,假設表陣列已經排好了
void sort(element elements, int table, int n)
if (elements[j] != temp)
}}
複雜度分析t=
o(mn
) ,m是每個元素複製的時間
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個基本有序的...