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

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

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

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

最后一步看到百位数上,0,1,8,27.......
这样把结果顺序放到数组里以后,就已经是一个排好序的数组了。
在这个基数排序里,浙大的课程举了个很好的例子,扑克牌。

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

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