数据结构Java版之基数排序(四)
基数排序:
基数排序分为两种:第一种是LSD ,从最低位开始排序, 第二种是 MSD 从最高位开始排。这里介绍第一种LSD排序算法。
首先,我们先了解什么是基数。基数是根据具体的排序情况而定的,比如我们常见的基数是十进制-10,还有二进制-2。
其次,要熟记基数排序的思想:通过对每一个位上的值相排序,就可以完成对整个数组的排序。
基数排序的算法实现流程:遍历所有数组元素,找出元素最大的位值 -------->从低位到高位把数组元素上的位值存入链表中-------->遍历所有链表,将链表里面的值重新赋值给数组,再情况链表。
例如:对数组 int[ ] data = {421, 240, 35, 532, 305, 430, 124};进行排序,首先我们要做的是对个位上的数值进行排序。
第一遍排序的结果为: 240 430 421 532 124 35 305
再进行十位上的数值排序:
第二遍排序的结果为: 305 421 124 430 532 35 240
再进行百位上的数值排序:
第三遍排序的结果为: 35 124 240 305 421 430 532
最后我们的到的排序结果就是: 35 124 240 305 421 430 532
至此,已经完成了对数组的排序
附源码:
public class RadixSort {@Testpublic void fun() {int[] n = {421, 240, 35, 532, 305, 430, 124};radixSort(n);for(int i : n) {System.out.print(i + " ");}}//实现基数排序 LSD-从最低位开始排 MSD-从最高位开始排public void radixSort(int[] data) {int maxBin = maxBin(data);List<List<Integer>> list = new ArrayList<List<Integer>>();for(int i = 0; i < 10; i ++) {list.add(new ArrayList<Integer>());}for(int i = 0, factor = 1; i < maxBin; factor *= 10, i ++) {for(int j = 0; j < data.length; j ++) {list.get((data[j]/factor)%10).add(data[j]);}for(int j = 0, k = 0; j < list.size(); j ++) {while(!list.get(j).isEmpty()) {data[k] = list.get(j).get(0);list.get(j).remove(0);k ++;}}}}//计算数组里元素的最大位数public int maxBin(int[] data) {int maxLen = 0;for(int i = 0; i < data.length; i ++) {int size = Integer.toString(data[i]).length();maxLen = size > maxLen ? size : maxLen;}return maxLen;} }
转载于:https://www.cnblogs.com/ranter/p/9197983.html
数据结构Java版之基数排序(四)相关推荐
- 数据结构java版txt,图解数据结构:使用Java
图解数据结构:使用Java 下载 mobi epub pdf ☆☆☆☆☆ 胡昭民 著 下载链接在页面底部 发表于2021-03-10 图书介绍 出版社: 清华大学出版社 ISBN:9787302402 ...
- 数据结构(Java版 2022-10-30)
第一章:算法介绍 数据结构与算法面试题" 一.字符串匹配问题:有一个字符串str1="计算机科学与技术学院欢迎您!" 和另一个字符串 str2="计算机科学与技 ...
- 数据结构(Java版2022-10-29)
第一章:算法介绍 数据结构与算法面试题" 一.字符串匹配问题:有一个字符串str1="计算机科学与技术学院欢迎您!" 和另一个字符串 str2="计算机科学与技 ...
- 数据结构(java版)SortedSeqList(排序顺序表)
SortedSeqList(排序顺序表) 代码部分: public class SortedSeqList<T extends Comparable<? super T>> e ...
- 四人麻将 java版下载_四人麻将下载-四人打麻将免费版手机最新下载
四人麻將創新結合國標麻將和四川省血液之戰多種玩法,花式魔幻的國家標准番型和胡牌,連胡不斷的血流成河,一站到底的血流成河,讓你high爆整場爽翻天.點卷送不斷,開展活動更有手機話費.手機等豐富獎賞! 四 ...
- 数据结构Java版实验五_实验五数据结构综合应用 20162310
分析系统架构 Sprite精灵类 ISprite精灵类是所有类的父类 CombatAircraft战斗机类 首先确保战斗机完全位于Canvas范围内,每隔7帧发射单发黄色子弹. protected v ...
- 数据结构java版 大学_数据结构(Java版)
"数据结构"是计算机科学与技术专业.软件工程专业甚至于其它电气信息类专业的重要专业基础课程.它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事大型 ...
- 数据结构java版之 栈的应用一
上一篇我们自定义了栈和队列.本篇使用栈结构来完成一个功能,看看他的应用.会分两篇讲解.本篇需求:设计一个栈结构,实现字符串的反转,字符串不包括汉子. 过程如下,因为代码做了很详细的解释.没有必要再去讲 ...
- 数据结构java版之《简单排序》
本篇文章针对上一篇的数组,实现几个简单的排序功能,并给出实现思路.包括冒泡.选择.插入三种最简单的排序. 1.冒泡排序: 实现思路图解: public static void sort(int[] ...
最新文章
- python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
- 纪录备忘:应用中的脚本应用
- Asp.net MVC 示例项目Suteki.Shop分析之---ViewData
- Oracle Code登录北京 代码盛宴邀你high起来|免费报名
- 解决 VUE: [Vue warn]: Do not use built-in or reserved HTML elements as component id: xx
- 336计算机考研怎么做到啊,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
- (软件工程复习核心重点)第四章总体设计-第四节:描绘软件结构的图形工具
- UVa1587 - Box
- [bbk4995] 第99集 -第12章 -数据移植 05
- sudo: vim:找不到命令_linux常用命令(3)
- Ubuntu 20.04 安装 Google 拼音输入法
- 理财APP的低成本ASO优化实战
- excel怎么自动填充连续数字
- 前端实现视频录制功能
- 【消费者心理与行为(第6版)】第7章 消费者的需要与购买动机
- 阳历转化为农历的c语言程序,公历和农历之间如何转换?
- 张振民北京计算机专修学院,工行甘肃省分行张振民一行来校考察交流
- C++中sprintf_s与sprintf的不同
- R语言数学建模(2):how to build a graph
- 2016年12月六级农业翻译