栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

桶排序、基数排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

桶排序、基数排序

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;

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

代码如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号