基数排序

基数排序

  • 介绍

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

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

    • 实现思路

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

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

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

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

      • 排序

        • 第一轮排序:将每个元素的个位取出,然后看这个数应该放在哪个对应的桶(一个一维数组)比如,53,个位为3,放在标号为3的桶。3,放在标号为3的桶,放在53的下面,后面一次类推。然后,按照桶的顺序,依次取出数据,放入原来数组。54,2,53,3,14,214,748
          基数排序_第1张图片
        • 第二轮排序:将每个元素的十位取出,按照第一轮排序的规则,进行放入桶(3这个元素,十位没有,视为0),然后桶排序,依次取出数据,放入原来数组,3,14,214,542,748,53 基数排序_第2张图片
        • 第三轮排序:将每个元素的百位取出,按照第一轮的排序规则,进行放入桶(3这个元素,百位看作0),然后桶排序,依次取出数据,放入原来的数组3,14,53,214,542,748 基数排序_第3张图片
  • 代码实现

    基数排序

    时间测试

    排序前的时间是=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]之前,说明排序算法是稳定的,否则不称为稳定。

你可能感兴趣的:(数据结构)