基數排序:
假設:如果要排序的專案是大範圍但小數字的整數,我們可以將計數排序(counting sort)思想與基數排序(radix sort)結合起來,以實現線性時間複雜度。
在基數排序中,我們將每個專案排序為乙個 w 數字串(如果需要,我們填充小於w數字的前幾個零的整數)。
對於最低有效位(最右邊)到最高有效位(最左邊),我們通過 n 個專案並將它們按照活動數字放到10個佇列中(每個數字[0..9]乙個),就好像 乙個修改的計數排序,因為這保留了穩定性。 然後我們再次重新連線組,以便進行後續迭代。
請嘗試上面示例陣列的radix sort來了解更清晰的解釋。
請注意,我們只執行o(w×(n + k))次迭代。 在這個例子中,w = 4,k = 10。
參考:
演算法 8 基數排序
1.基數排序 1.2 include include define dbmsg fmt,args printf s s d fmt n file function line args intdump array int arr int len printf n return 0 int get po...
排序演算法8 基數排序
基數排序 基數排序的演算法思想 基數排序不同於前面的各種排序演算法,前面的排序演算法都是基於元素之間的比較好實現的,而基數排序則是利用分類進行排序的方法。演算法思想 基數排序是一種多關鍵字排序演算法。基數排序通過對所有元素根據關鍵字進行分類,然後按照關鍵字的順序將這些元素收集起來,通過這樣的方法完成...
驗證演算法(8)基數排序
include include include define maxe 20 線性表中最多元素個數 define maxr 10 基數的最大取值 define maxd 8 關鍵字位數的最大取值 typedef struct node rectype void crealink rectype p,...