天天看點

看動畫學算法之:排序-基數排序

簡介

基數排序的例子

基數排序的java代碼實作

基數排序的時間複雜度

之前的文章我們講了count排序,但是count排序有個限制,因為count數組是有限的,如果數組中的元素範圍過大,使用count排序是不現實的,其時間複雜度會膨脹。

而解決大範圍的元素排序的辦法就是基數排序。

什麼是基數排序呢?

考慮一下,雖然我們不能直接将所有範圍内的數字都使用count數組進行排序,但是我們可以考慮按數字的位數來進行n輪count排序,每一輪都隻對數字的某一位進行排序。

最終仍然可以得到結果,并且還可以擺脫count數組大小的限制,這就是基數排序。

假如我們現在數組的元素是:1221, 15, 20, 3681, 277, 5420, 71, 1522, 4793。

先看動畫,看下最直覺的基數排序的過程:

看動畫學算法之:排序-基數排序

在上面的例子中,我們先對個位進行count排序,然後對十位進行count排序,然後是百位和千位。

最後生成最終的排序結果。

因為基數排序實際上是分别按位數的count排序。是以我

繼續閱讀