基数排序

喜夏-厌秋 提交于 2019-11-25 19:47:17

基数排序

  • 介绍

    • 1887年赫尔曼喝了礼发明的

    • 基数排序是桶排序的扩展

    • 实现思路

      • 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成了一个有序序列。
    • 应用实例

      • 初始状态:53,3,542,748,14,214,使用基数排序,进行反序排序。

      • 根据0-9,对应10个桶

      • 轮数取决于最大数的位数

      • 排序

        • 第一轮排序:将每个元素的个位取出,然后看这个数应该放在哪个对应的桶(一个一维数组)比如,53,个位为3,放在标号为3的桶。3,放在标号为3的桶,放在53的下面,后面一次类推。然后,按照桶的顺序,依次取出数据,放入原来数组。54,2,53,3,14,214,748

        • 第二轮排序:将每个元素的十位取出,按照第一轮排序的规则,进行放入桶(3这个元素,十位没有,视为0),然后桶排序,依次取出数据,放入原来数组,3,14,214,542,748,53

        • 第三轮排序:将每个元素的百位取出,按照第一轮的排序规则,进行放入桶(3这个元素,百位看作0),然后桶排序,依次取出数据,放入原来的数组3,14,53,214,542,748

  • 代码实现

    基数排序

    时间测试

    排序前的时间是=2019-08-06 16:49:06 排序后的时间是=2019-08-06 16:49:06 
  • 说明

    • 速度很快
    • 基数排序是经典的空间换时间的方式,占用内存很大,对海量的数据数据排序时,容易造成OutOfMemoryError
    • 基数排序是稳定的,若经过排序,这记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,说明排序算法是稳定的,否则不称为稳定。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!