基数排序 java实现
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实现相关推荐
- 基数排序(Java)
基数排序(Java) 文章目录 基数排序(Java) 1.概念 2.基数排序.计数排序.桶排序的区别 3.基本思想 4.代码 5.八百万数据测试 6.完整代码(负数也可以排序) 1.概念 基数排序是一 ...
- 桶排序和基数排序 Java
桶式排序 概念 有限个数字m,每个数字的大小都在1与n之间,则我们可以假设有n个桶,遍历m个数字,将其存入对应的桶中(如数字的值为3,就存入3号桶,桶的值对应存入数字的个数) 例子 有数字3,3,5, ...
- java 桶排序_[图解] 桶排序
桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序.选择排序.插入排序.归并排序.快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路,即基于数据状态的排序. 1. 桶排序的 ...
- 各种排序算法及其java程序实现
原文:http://blog.csdn.net/t12x3456/article/details/7430700 各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入 ...
- java各种排序实现
排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序队列. 对一个排序算法来说,一般从下面3个方面来衡量算法的优劣: 时间复杂度:它 ...
- 机器学习面试问题汇总
1监督与非监督区别 2L1L2区别 3生成模型和判别模型区别 像贝叶斯lda 等就是生成模型计算过概率分布之类的 1svm算法的原理如何组织训练数据如何调节惩罚因子如何防止过拟合svm的泛化能力增量学 ...
- 机器学习应届面试会问到的面试问题汇总
转载:https://blog.csdn.net/q383700092/article/details/58605715 1监督与非监督区别 2L1L2区别 3生成模型和判别模型区别 像贝叶斯lda ...
- 机器学习面试问题汇总—史上最详细
本人计算机小白一枚,将自己学到的知识点整理出来,一方面是对自己学习的小总结,另一方面是欢迎大家批评指正.如果觉得写得还可以,大家可以转发关注此博客,谢谢!后续会有新算法持续更新~.. . ------ ...
- 【原创】远景能源面试--一面
首先就是你在学校的研究方向是什么?---->云计算和大数据 这个方向有点太大了,那说说你为啥要选择这个方向,现在做了哪些研究? 1.HashMap和HashTable HashMap是Hasht ...
最新文章
- Spring @SessionAttributes @ModelAttribute
- win10+tensorflow:ImportError: No module named '_pywrap_tensorflow_internal',这波操作真让人窒息
- 成功解决ValueError: Invalid format string
- 如何让以特定字符串结尾的所有站点都被加入到Local Intranet Zone中?
- 理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,是理解消息的关键)
- 使用final修饰局部变量???
- 笔记 - Android应用架构 (Android Dev Summit 2015)
- EasyAndroid基础集成组件库之:EasyReflect 优雅的反射功能库
- android 转场动画 4.4,Android高级UI开发(二十七)Material Design之转场动画(一)
- Wowza Media Server 入门系列--Wowza Media Server 安装及演示
- JS逆向|JavaScript代码改写成Python代码之小试牛刀
- 如何用代码模拟自由落体
- Leetcode 781 森林中的兔子
- java空指针异常解决_Java中的空指针异常是什么以及如何解决?
- 每日一技:给女友用代码做一个3D旋转相册,每天亿遍忘记初恋~
- 输入法表情和小图标的应用
- 记一次windows 10启动报错 An operat ing system wasn‘t found. Try disconnecting any drives that don‘t con问题
- 高手勿进!写给初中级程序员以及还在大学修炼的“准程序员”的成长秘籍
- 网上收集的几个花指令
- librecad二次开发
热门文章
- 【Windows】Windows Server 2022子域控制器配置
- 苹果电脑macos Big Sur 11.2.2 (20D80)dmg原版引导版镜像下载
- Simhash源码学习
- 计算机网络费入哪个会计科目,电子商业汇票系统使用费记什么科目
- 使用xlwings操作wps,“找不到成员”报错的解决办法
- 迅雷创始人程浩写了篇5万+的文章,告诫你创业AI前,必须注意的6大核心问题
- linux进程的高级管理,sched_yield()函数 高级进程管理
- 组合测试工具PICT的安装及使用
- 实验2-4-5 简单实现x的n次方 (10分)
- audio驱动之cpu_dai