第 30 題:如何理解基數排序?
什麼是基數排序?
基本思想:基數排序是按照低位先排序,然後收集;再按照高位排序,然後再收集;依次類推,直到最高位
直觀表達:就是將每個數按照它的位數進行拆分,對每一個對應的位數進行比較排序,直到所有位數都進行過一遍排序位置
基礎排序最重要的就是位數
數字: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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第 28 題:如何理解計數排序?排序
- 基數排序的簡單理解排序
- 計數排序vs基數排序vs桶排序排序
- 桶排序和基數排序排序
- 如何理解插入排序?排序
- java 基數排序Java排序
- 排序演算法__基數排序排序演算法
- 歸併排序和基數排序排序
- 基於桶的排序之基數排序以及排序方法總結排序
- 基數排序 LSD py排序
- 看圖輕鬆理解計數排序排序
- 基於桶的排序之計數排序排序
- (戀上資料結構筆記):計數排序、基數排序 、桶排序資料結構筆記排序
- 【演算法】基數排序演算法排序
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序
- 深度學習面試100題(第26-30題)深度學習面試
- 看動畫學演算法之:排序-基數排序動畫演算法排序
- 經典十大排序演算法(含升序降序,基數排序含負數排序)排序演算法
- C#基數排序演算法C#排序演算法
- 基數排序就這麼簡單排序
- rust-algorithms:12-基數排序RustGo排序
- 15.百萬考生成績如何排序 - 計數排序排序
- 理解希爾排序排序
- Python基礎面試題30問!Python基礎教程Python面試題
- 第三章:查詢與排序(下)----------- 3.21基數排序排序
- 每週分享第 30 期
- 八大排序演算法—16張圖搞懂基數排序排序演算法
- 資料結構與演算法——排序演算法-基數排序資料結構演算法排序
- 如何理解JavaScript中常用的4種排序演算法?JavaScript排序演算法
- 劍指offer第49題 醜數
- leetcode的第9題:迴文數LeetCode
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- JS中如何理解浮點數?JS
- 面試題:如何理解閉包面試題
- Java排序理解增強版Java排序
- 快速排序的簡單理解排序
- Java排序之計數排序Java排序
- 30分鐘理解GraphQL核心概念