zoukankan      html  css  js  c++  java
  • 关于基数排序原理的理解

    假设有如下数字:
        91, 46, 85, 15, 92, 35, 31, 22
    经过基数排序第一次扫描之后, 数字被分配到如下盒子中:
        Bin 0:
        Bin 1: 91, 31
        Bin 2: 92, 22
        Bin 3:
        Bin 4:
        Bin 5: 85, 15, 35
        Bin 6: 46
        Bin 7:
        Bin 8:
        Bin 9:
    根据盒子的顺序, 对数字进行第一次排序的结果如下:
        91, 31, 92, 22, 85, 15, 35, 46
    然后根据十位上的数值再将上次排序的结果分配到不同的盒子中:
        Bin 0:
        Bin 1: 15
        Bin 2: 22
        Bin 3: 31, 35
        Bin 4: 46
        Bin 5:
        Bin 6:
        Bin 7:
        Bin 8: 85
        Bin 9: 91, 92
    最后, 将盒子中的数字取出, 组成一个新的列表, 该列表即为排好序的数字:
        15, 22, 31, 35, 46, 85, 91, 92

    如果存在个位数怎么办?存在十位数相同的情况怎么办?

      排序对象第一次的排序结果是按照个位数从小到大排列的,一旦有个位数出现,就算有多个个位数,因为排序对象的处理是从前往后的,那么进入相应的盒子内也是按从小到大排列的;存在十位数相同的情况下,同样的原理,其实在第一次排序后,个位数相同而十位数不同的数已经按照从小到大的顺序排列了,其结果毋庸置疑。

  • 相关阅读:
    [刷题] IDA*
    [BZOJ1330] Editing a Book
    [BZOJ5449] 序列
    [刷题] 搜索剪枝技巧
    [XJOI3529] 左右
    [CF920E] Connected Components?
    [第18届 科大讯飞杯 J] 能到达吗
    洛谷 P4779 【模板】单源最短路径(标准版)
    洛谷 P1175 表达式的转换
    pipioj 1291 中缀表达式转后缀表达式I
  • 原文地址:https://www.cnblogs.com/feile/p/5374825.html
Copyright © 2011-2022 走看看