基數排序的方式可以采用最低位優先LSD(Least sgnificant digital)法或最高位優先MSD(Most sgnificant digital)法,LSD的排序方式由鍵值的最右邊開始,而MSD則相反,由鍵值的最左邊開始。我們這裡使用LSD法,原理就是一個數組我們首先根據他的個位進行排序,然後在根據十位,百位……,這裡最多排到多少位是根據他的最大值确定的,如果最大值有千位,我們必須要計算到千位,如果最多隻有十位,我們就計算到十位就可以了,每一位都排序完了之後,數組也就排序成功了,來看一下代碼

如果了解基數排序的上面代碼可能很容易了解,我們随便找一組代碼來測試一下結果吧
看一下運作結果
結果完成正确,看代碼不知很直覺,我們還是畫一個圖來幫助我們了解上面的代碼吧。
排序的時候先根據個位,然後十位,然後百位,等每個位上的都排序完了之後整個數組也就排序完成了。但是上面代碼還不是很完美,因為當出現負數的時候上面代碼就沒法排序了,我們來想一下當出現負數的時候應該怎麼辦,話不多說,直接上代碼,我們來看一下
其中getMaxNumbit表示傳回位數最多的值,也可以說是傳回絕對值最大的值,我們看到上面temp加了9,是以如果出現負數就不會報錯了,因為每一位隻能是從-9~9,總共19個數,當最小-9的時候,再加上9就變為0,下标從0開始,是以也不會出現數組越界異常。
我們找一組資料來測試一下
來看一下運作結果