2018-04-11 基数排序—次位优先

次位优先我的理解实际上是一种思想,就是基于要排序的数据,根据其位数进行排序,比如32,42,156,那就是先把这几个数的个位比较一下,排一轮,然后十位数比一下,排一轮,以此类推。

次位优先—数据源.png

图中红框部分就是数据源,根据数据源的数量,先做出相应的10个桶,已用做桶排序。


.png

从这儿可以看出,第一轮创建了Length为10的数组,然后根据数据源中的个位数,进行了一轮排序。


从这儿又可以看出来,我们根据上一轮个位数的排序结果又进行了十位数的一轮排序,现在看来数据上已经有些大不同了,那么先把这些数据做成一个链表或者数组以备下一轮排序用。


次位优先—百位数.png

最后一步看到百位数上,0,1,8,27.......
这样把结果顺序放到数组里以后,就已经是一个排好序的数组了。

在这个基数排序里,浙大的课程举了个很好的例子,扑克牌。


基数排序—扑克牌.png

可以看到一副扑克牌,一般是按照两种关键字(原则)排序的,花色和面值。那么这种时候可以怎么做呢


次位优先—扑克牌2.png

看到这儿就可以理解了,你看,手牌如果是13张牌,那我们先创建13个桶,进行一番次位优先排序,按照面值先将他们排好序。
然后再建造4个花色的桶。再根据花色把上一轮面值排序的结果放进去,很自然的手牌就是排序好的结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,288评论 0 2
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    闲云清烟阅读 773评论 0 6
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,320评论 0 35
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,753评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,237评论 0 52