簡介
基數排序的例子
基數排序的java代碼實作
基數排序的時間複雜度
之前的文章我們講了count排序,但是count排序有個限制,因為count數組是有限的,如果數組中的元素範圍過大,使用count排序是不現實的,其時間複雜度會膨脹。
而解決大範圍的元素排序的辦法就是基數排序。
什麼是基數排序呢?
考慮一下,雖然我們不能直接将所有範圍内的數字都使用count數組進行排序,但是我們可以考慮按數字的位數來進行n輪count排序,每一輪都隻對數字的某一位進行排序。
最終仍然可以得到結果,并且還可以擺脫count數組大小的限制,這就是基數排序。
假如我們現在數組的元素是:1221, 15, 20, 3681, 277, 5420, 71, 1522, 4793。
先看動畫,看下最直覺的基數排序的過程:
在上面的例子中,我們先對個位進行count排序,然後對十位進行count排序,然後是百位和千位。
最後生成最終的排序結果。
因為基數排序實際上是分别按位數的count排序。是以我