第 30 題:如何理解基數排序?

dead_lee發表於2021-09-09

什麼是基數排序?

基本思想:基數排序是按照低位先排序,然後收集;再按照高位排序,然後再收集;依次類推,直到最高位

直觀表達:就是將每個數按照它的位數進行拆分,對每一個對應的位數進行比較排序,直到所有位數都進行過一遍排序位置

基礎排序最重要的就是位數

數字:832 透過位數可以拆分成 個位數,十位數,百位數

字母:sdf 透過位數可以拆分成 s d f

栗子

假設有一組序列:329, 457, 657, 839, 436, 720, 355

首先我們知道它他們最大的值(839)的位數有 3 位(百位數,十位數,個位數),那麼就可以這組序列的對應位數進行排序比較

首先對個位數(最右邊的數)進行排序,結果為

720, 355, 436, 457, 657, 329, 839

然後對十位數(中間的數)進行排序,結果為

720, 329, 436, 839, 355, 457, 657

然後對百位數(最右邊的數)進行排序,結果為

329, 355, 436, 457, 657, 720, 839

每一個位數都分別進行了排序比較,所以遍歷結束。

最後得到已經排好序的序列

那麼這個時候就會有人問了,如果它們的位數不同呢?如果每個元素是一串字母而不是數字呢?

位數不同如何處理?

3, 200, 55, 220, 70

一般我們對每個位數進行判斷都是從 0~9 來進行,如果位數不同,那麼就要提前判斷該元素是否擁有個位數,十位數,百位數,如果沒有則排在 0 前面

元素為英文字串,並非是數字?

單個字母也是可以進行大小判斷的,a-z

元素為英文字串和數字的實現方式也是一樣的,只是沒有了個位數,十位數,百位數的說法,可以換成右邊第 0 位,1 位,2 位這樣

圖片描述

動圖展示

圖片描述

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4686/viewspace-2796654/,如需轉載,請註明出處,否則將追究法律責任。

相關文章