package sort;
//基数排序:稳定排序
public class RadixSort {

// d为数据长度,根据数据长度排几次序
private static int[] radixSorting(int[] arr, int d) {
for (int i = 0; i < d; i++) {
arr = countingSort(arr, i); // 依次对各位数字排序(直接用计数排序的变体)
}
return arr;
}

// 利用计数排序对元素的每一位进行排序
private static int[] countingSort(int[] arr, int expIndex) {
int k = 9;
int[] b = new int[arr.length];
int[] c = new int[k + 1]; // 标记位,确定元素所在b数组中的位置

for (int i = 0; i < arr.length; i++) {
int d = getBitData(arr[i], expIndex);
c[d]++;
}
for (int i = 1; i <= k; i++) {
c[i] += c[i - 1];   //c[i]的值用于表示元素i所在b数组中的位置
}
for (int i = arr.length - 1; i >= 0; i--) {
int d = getBitData(arr[i], expIndex);
b[c[d] - 1] = arr[i];// C[d]-1 就代表d在b的位置
c[d]--;
}
return b;
}

// 获取data指定位的数
private static int getBitData(int data, int expIndex) {
while (data != 0 && expIndex > 0) {
data /= 10;
expIndex--;
}
return data % 10;
}
//数组打印函数
public static void printsort(int a[])
{
for(int k=0;k<a.length;k++)
System.out.println(a[k]);
}

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[] { 189, 274, 58, 835, 751, 235, 774, 690, 88, 79,69 };

int b[]=radixSorting(arr, 3);
printsort(b);
}

}

基数排序 java实现相关推荐

  1. 基数排序(Java)

    基数排序(Java) 文章目录 基数排序(Java) 1.概念 2.基数排序.计数排序.桶排序的区别 3.基本思想 4.代码 5.八百万数据测试 6.完整代码(负数也可以排序) 1.概念 基数排序是一 ...

  2. 桶排序和基数排序 Java

    桶式排序 概念 有限个数字m,每个数字的大小都在1与n之间,则我们可以假设有n个桶,遍历m个数字,将其存入对应的桶中(如数字的值为3,就存入3号桶,桶的值对应存入数字的个数) 例子 有数字3,3,5, ...

  3. java 桶排序_[图解] 桶排序

    桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序.选择排序.插入排序.归并排序.快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路,即基于数据状态的排序. 1. 桶排序的 ...

  4. 各种排序算法及其java程序实现

    原文:http://blog.csdn.net/t12x3456/article/details/7430700 各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入 ...

  5. java各种排序实现

    排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序队列. 对一个排序算法来说,一般从下面3个方面来衡量算法的优劣: 时间复杂度:它 ...

  6. 机器学习面试问题汇总

    1监督与非监督区别 2L1L2区别 3生成模型和判别模型区别 像贝叶斯lda 等就是生成模型计算过概率分布之类的 1svm算法的原理如何组织训练数据如何调节惩罚因子如何防止过拟合svm的泛化能力增量学 ...

  7. 机器学习应届面试会问到的面试问题汇总

    转载:https://blog.csdn.net/q383700092/article/details/58605715 1监督与非监督区别 2L1L2区别 3生成模型和判别模型区别 像贝叶斯lda ...

  8. 机器学习面试问题汇总—史上最详细

    本人计算机小白一枚,将自己学到的知识点整理出来,一方面是对自己学习的小总结,另一方面是欢迎大家批评指正.如果觉得写得还可以,大家可以转发关注此博客,谢谢!后续会有新算法持续更新~.. . ------ ...

  9. 【原创】远景能源面试--一面

    首先就是你在学校的研究方向是什么?---->云计算和大数据 这个方向有点太大了,那说说你为啥要选择这个方向,现在做了哪些研究? 1.HashMap和HashTable HashMap是Hasht ...

最新文章

  1. Spring @SessionAttributes @ModelAttribute
  2. win10+tensorflow:ImportError: No module named '_pywrap_tensorflow_internal',这波操作真让人窒息
  3. 成功解决ValueError: Invalid format string
  4. 如何让以特定字符串结尾的所有站点都被加入到Local Intranet Zone中?
  5. 理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,是理解消息的关键)
  6. 使用final修饰局部变量???
  7. 笔记 - Android应用架构 (Android Dev Summit 2015)
  8. EasyAndroid基础集成组件库之:EasyReflect 优雅的反射功能库
  9. android 转场动画 4.4,Android高级UI开发(二十七)Material Design之转场动画(一)
  10. Wowza Media Server 入门系列--Wowza Media Server 安装及演示
  11. JS逆向|JavaScript代码改写成Python代码之小试牛刀
  12. 如何用代码模拟自由落体
  13. Leetcode 781 森林中的兔子
  14. java空指针异常解决_Java中的空指针异常是什么以及如何解决?
  15. 每日一技:给女友用代码做一个3D旋转相册,每天亿遍忘记初恋~
  16. 输入法表情和小图标的应用
  17. 记一次windows 10启动报错 An operat ing system wasn‘t found. Try disconnecting any drives that don‘t con问题
  18. 高手勿进!写给初中级程序员以及还在大学修炼的“准程序员”的成长秘籍
  19. 网上收集的几个花指令
  20. librecad二次开发

热门文章

  1. 【Windows】Windows Server 2022子域控制器配置
  2. 苹果电脑macos Big Sur 11.2.2 (20D80)dmg原版引导版镜像下载
  3. Simhash源码学习
  4. 计算机网络费入哪个会计科目,电子商业汇票系统使用费记什么科目
  5. 使用xlwings操作wps,“找不到成员”报错的解决办法
  6. 迅雷创始人程浩写了篇5万+的文章,告诫你创业AI前,必须注意的6大核心问题
  7. linux进程的高级管理,sched_yield()函数 高级进程管理
  8. 组合测试工具PICT的安装及使用
  9. 实验2-4-5 简单实现x的n次方 (10分)
  10. audio驱动之cpu_dai