基數排序法是什麼
一種非比較型排序法。適合排非整數數據,如浮點數、字串。透過逐位進行排序。適合數據量大且數據範圍有限。
舉例
欲用基數排序法排數列[170, 45, 75, 90, 802, 24, 2, 66]。
1. 首先排個位數
170 (0)
45(5)
75(5)
90(0)
802(2)
24(4)
2(2)
66(6)
排序後變成[170, 90, 802, 2, 24, 45, 75, 66]
2. 排十位數
170(7)
90(9)
802(0)
2(0)
24(2)
45(4)
75(7)
66(6)
排序後變成[802, 2, 24, 45, 66, 170, 75, 90]
3. 排百位數
802(8)
2(0)
24(0)
45(0)
66(0)
170(1)
75(0)
90(0)
排序後變成[ 2, 24, 45,66, 75, 90,170,802]
時間複雜度
O(d*(n+k)),其中d為位數,k為基數,如十進位是10,數值範圍為0~9。為了對每一位排序用計數排序法,首先建最大值加1長度的計數陣列O(k),再將元素頻率填入計數陣列O(n)所以時間複雜度為O(n+k)。
空間複雜度
計數陣列空間O(k)加額外輸出陣列O(n),故空間複雜度為O(n+k)
沒有留言:
張貼留言
寫下幸福點子吧!