桶排序基数排序

Posted dxj1016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了桶排序基数排序相关的知识,希望对你有一定的参考价值。

13、桶排序

14、基数排序

找数组中最大的元素看他是几位数,然后对其它元素在前面补0成最大元素的相同位数

然后准备桶,先根据各位数字来,看数字是啥就对应几号桶,然后将桶里的元素从左到右导出来,然后根据十位数的数字来,看数值是啥就对应几个号桶,然后将桶中的元素从左到右导出来,然后再根据百位数进行,最后导出来就是排好序的数组元素。

优化:

先用一个count的数组放元素的个位数有几个。比如013的个位数是3,所以在3的位置标1;021的个位数是1所以在1的位置标1,011的个位数是1,所以在1的位置标1,因为之前有一个1了,所以加起来就是2,052的个位数是2,所以在2的位置标1;062的个位数是2,所以在2的位置标1,因为之前有一个1了所以加起来就是2;其实count中就是存放中数组中元素的个位数的数值有几个相等的。比如在2位置上的有多少个是等于2的,就有2。

然后再将前面一个和自己的相加得到自己位置的数值,所以count相当于存的是小于等于个位数数值的元素有多少个。比如当位置在2的时候,之前是表示个位数是2的有2个,现在表示的是各位是小于等于2的有4个。

然后数组中的元素从右往左开始遍历,用一个help数组来放数组中的元素;比如062,个位数是2,所以看上面的count数组,2的位置对于的有4个数值,所以他应该放在4-1=3的位置上,2位置的4也改成3,继续看052;个位数是2,所以看到2位置上的是3,所以放在3-1=2的位置上,而且2位置的3-1=2;

注意:为什么要从右边开始到左边,是因为要先入桶的先出桶;

代码如下:

以上是关于桶排序基数排序的主要内容,如果未能解决你的问题,请参考以下文章

基数排序就是这么容易

基于桶的排序之基数排序以及排序方法总结

桶排序/基数排序(Radix Sort)

排序算法 (11.基数排序)

10基数排序

算法计数排序桶排序和基数排序详解