package com.rao.sort;

import java.util.*;

/**
* @author Srao
* @className RadioSort
* @date 2019/12/10 18:17
* @package com.rao.sort
* @Description 基数排序
*/
public class RadioSort { /**
* 基数排序
* @param arr
* @return
*/
public static int[] radioSort(int[] arr){
//1.找出最大值
int n = arr.length;
int max = arr[];
for (int i = ; i < n; i++) {
if (max < arr[i]){
max = arr[i];
}
} //2.求出对大值的位数
int num = ;
while (max / > ){
num++;
max /= ;
} //3.创建桶
List<LinkedList<Integer>> bucketList = new ArrayList<>(); //4.初始化桶
for (int i = ; i < ; i++) {
bucketList.add(new LinkedList<>());
} //5.把每个数放到对应的桶当中
for (int i = ; i <= num; i++){
for (int j = ; j < n; j++) {
int index = (int) ((arr[j]/Math.pow(, i-)) % );
bucketList.get(index).add(arr[j]);
} //6.把桶中的数输出到原数组
int k = ;
for (int j = ; j < ; j++){
for (Integer integer : bucketList.get(j)) {
arr[k] = integer;
k++;
}
//清除桶中的元素
bucketList.get(j).clear();
}
}
return arr;
} public static void main(String[] args) {
int[] arr = new int[]{,,,,,,,};
System.out.println(Arrays.toString(arr));
arr = radioSort(arr);
System.out.println(Arrays.toString(arr));
}
}

  基数排序是按照个位,十位,百位。。。这种顺序来排序的。

  1.先比较数的个位,按照不同的大小放在10个桶里面,然后把桶中的数返回给原数组。

  2.然后比较十位,按照十位的大小把所有的数放在0-9这10个桶里面,然后把桶中的数返回给原数组。

  3.以此类推,在比较完最高位之后,数组中的数就是有序的了。

  

排序算法-基数排序(Java)的更多相关文章

  1. 基本排序算法——基数排序java实现

    基数排序 package basic.sort; import java.util.Arrays; import java.util.Random; public class RadixSort { ...

  2. 常见排序算法总结 -- java实现

    常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...

  3. 十大经典排序算法(java实现、配图解,附源码)

    前言: 本文章主要是讲解我个人在学习Java开发环境的排序算法时做的一些准备,以及个人的心得体会,汇集成本篇文章,作为自己对排序算法理解的总结与笔记. 内容主要是关于十大经典排序算法的简介.原理.动静 ...

  4. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  5. 几大排序算法的Java实现

    很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向 ...

  6. 7种基本排序算法的Java实现

    7种基本排序算法的Java实现 转自我的Github 以下为7种基本排序算法的Java实现,以及复杂度和稳定性的相关信息. 以下为代码片段,完整的代码见Sort.java 插入排序 /** * 直接插 ...

  7. 经典排序算法 - 基数排序Radix sort

    经典排序算法 - 基数排序Radix sort 原理类似桶排序,这里总是须要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,临时忽视十位数 比如 待排序数组[ ...

  8. 几种简单的排序算法(JAVA)

    几种排序算法(JAVA) 一.代码 package com.hdwang; import java.util.Arrays; /** * Created by admin on 2017/1/20. ...

  9. 几大排序算法的Java实现(原创)

    几大排序算法的Java实现 更新中... 注: 该类中附有随机生成[min, max)范围不重复整数的方法,如果各位看官对此方法有什么更好的建议,欢迎提出交流. 各个算法的思路都写在该类的注释中了,同 ...

  10. 使用 js 实现十大排序算法: 基数排序

    使用 js 实现十大排序算法: 基数排序 基数排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

随机推荐

  1. DataSet 反射转换成 List<T>

    /// <summary> /// DataSet转换成指定返回类型的实体集合 /// </summary> /// <typeparam name="T&qu ...

  2. scala基础题--100以内的数求和,求出当和第一次大于20的当前数【for】

    import util.control.Breaks._ object work01 { def main(args: Array[String]): Unit = { //方式一 var sum:I ...

  3. macrotask与microtask

    在说明宏任务及微任务前总结一下事件循环机制(event loop): 首先判断JS是同步还是异步,同步就进入主线程,异步就进入event table 异步任务在event table中注册函数,当满足 ...

  4. 大数据基础总结---MapReduce和YARN技术原理

    Map Reduce和YARN技术原理 学习目标 熟悉MapReduce和YARN是什么 掌握MapReduce使用的场景及其原理 掌握MapReduce和YARN功能与架构 熟悉YARN的新特性 M ...

  5. linux 通过tar直接打包方式 迁移oracle的软件包环境:rdbms/lib/config.c

    step1.修改sysctl.conf step2.修改ulimit.conf step3.打包源oracle安装包 step4.通过id{oracle的安装运行用户} 获取安装oracle的[ORA ...

  6. 用友U9执行JS代码。

      UFSoft.UBF.UI.AtlasHelper.RegisterAtlasStartupScript(part.Page, part.Page.GetType(), "JavaScr ...

  7. C# vb .NET读取识别条形码线性条码UPC-A

    UPC-A是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的 ...

  8. C# winform窗体简单保存界面控件参数到xml

    引用网上的 XMLHelper 地址 :https://www.cnblogs.com/chnboy/archive/2009/04/02/1427652.html 稍做修改 using System ...

  9. oracle中查询一月的时间补0的问题

    sql语句 select NVL(B.weight, 0),A.time from (SELECT TO_CHAR(TO_DATE(开始时间, 'yyyy-MM-dd') + ROWNUM - 1, ...

  10. js执行上下文栈和变量对象

    JavaScript执行上下文栈和变量对象 JS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段. 例子一 ...