排序算法Java实现(基数排序)

算法思想:依次按个位、十位...来排序,每一个pos都有分配过程和收集过程,array[i][0]记录第i行数据的个数。
package sorting;/*** 基数排序* 平均O(d(n+r)),最好O(d(n+r)),最坏O(d(n+r));空间复杂度O(n+r);稳定;较复杂* d为位数,r为分配后链表的个数* @author zeng**/
public class RadixSort {//pos=1表示个位,pos=2表示十位public static int getNumInPos(int num, int pos) {int tmp = 1;for (int i = 0; i < pos - 1; i++) {tmp *= 10;}return (num / tmp) % 10;}//求得最大位数dpublic static int getMaxWeishu(int[] a) {int max = a[0];for (int i = 0; i < a.length; i++) {if (a[i] > max)max = a[i];}int tmp = 1, d = 1;while (true) {tmp *= 10;if (max / tmp != 0) {d++;} elsebreak;}return d;}public static void radixSort(int[] a, int d) {int[][] array = new int[10][a.length + 1];for (int i = 0; i < 10; i++) {array[i][0] = 0;// array[i][0]记录第i行数据的个数}for (int pos = 1; pos <= d; pos++) {for (int i = 0; i < a.length; i++) {// 分配过程int row = getNumInPos(a[i], pos);int col = ++array[row][0];array[row][col] = a[i];}for (int row = 0, i = 0; row < 10; row++) {// 收集过程for (int col = 1; col <= array[row][0]; col++) {a[i++] = array[row][col];}array[row][0] = 0;// 复位,下一个pos时还需使用}}}public static void main(String[] args) {int[] a = { 49, 38, 65, 197, 76, 213, 27, 50 };radixSort(a, getMaxWeishu(a));for (int i : a)System.out.print(i + " ");}
}

  

转载于:https://www.cnblogs.com/zengzhihua/p/4456753.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理

本文主要讲述基于VC6.0 MFC图像处理的应用知识&#xff0c;主要结合自己大三所学课程《数字图像处理》及课件进行讲解&#xff0c;主要通过MFC单文档视图实现显示BMP图片点运算处理&#xff0c;包括图像灰度线性变换、灰度非线性变换、图像阈值化处理、图像均衡化处理等知识&am…

马化腾:5G和AI双核驱动产业互联网进入“快车道”

来源&#xff1a;腾讯科技腾讯科技讯 3月30至31日&#xff0c;2019中国&#xff08;深圳&#xff09;IT领袖峰会以“IT新未来&#xff1a;5G与人工智能”为主题&#xff0c;汇聚了众多科技领袖和各界精英&#xff0c;聚焦未来通信、工业互联网、数字城市、金融科技等热门话题。…

MFC空间几何变换之图像平移、镜像、旋转、缩放

本文主要讲述基于VC6.0 MFC图像处理的应用知识&#xff0c;主要结合自己大三所学课程《数字图像处理》及课件进行讲解&#xff0c;主要通过MFC单文档视图实现显示BMP图片空间几何变换&#xff0c;包括图像平移、图形旋转、图像反转倒置镜像和图像缩放的知识。同时文章比较详细基…

超级干货:一文看懂5G产业链及投资机会

来源&#xff1a;新材料在线摘要&#xff1a;本文将讲述5G行业概况、产业链结构、上游关键原材料、本行业竞争格局及材料重点应用领域。报告合集涵盖5G关键材料、5G天线、氮化镓半导体、导热材料、电磁屏蔽材料、高频覆铜板基材、微波介质陶瓷、先进封装、手机外壳等九大市场研…

MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化

本文主要讲述基于VC6.0 MFC图像处理的应用知识&#xff0c;主要结合自己大三所学课程《数字图像处理》及课件进行讲解&#xff0c;主要通过MFC单文档视图实现显示BMP图像增强处理&#xff0c;包括图像普通平滑、高斯平滑、不同算子的图像锐化知识。希望该篇文章对你有所帮助&am…

南京大学教授施斌及其团队—— 光纤变“神经” 大地能感知

来源&#xff1a;人民日报你能相信吗&#xff1f;一根头发丝粗细的光纤&#xff0c;根据不同地质环境和多场监测要求&#xff0c;穿上各种“定制”的外衣&#xff0c;就能变身敏感强健的“大地感知神经”&#xff0c;使得大地一有灾害异动&#xff0c;远在千里之外的监测系统就…

MFC详解显示BMP格式图片

本文主要是讲述《数字图像处理》系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C和MFC显示BMP格式,主要结合自己的《数字图像处理》课程和以前的项目叙述讲解. 一.BMP图片格式定义 BMP文件格式是Windows操作系统推荐和支持的标准图像文件格式,是一种将内存或显示…

hdu 1257最少拦截系统(贪心)

最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23724 Accepted Submission(s): 9303题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1257 Problem Description某国为了防御敌国…

0pencv——图像腐蚀

1、代码如下&#xff1a; #include "stdafx.h" #include <opencv2/opencv.hpp>using namespace cv;int main() {Mat srcImage imread("小狗1.jpg");imshow("显示图像", srcImage);Mat element getStructuringElement(MORPH_RECT, Size(…

有关启动图片Launch的设置

使用Images.xcassets设置启动图片需要注意下面几点:1.将工程中的Launch Screen.xib 文件删除,info.plist中删除 Launch screen interface...选项.2.在target中App Icon and Launch Images中设置 Launch Images Source 选中LaunchImage.3.在Images.xcassets中新建New Launch Ima…

腾讯研究院发布:《人工智能+制造产业发展研究》报告

来源&#xff1a;腾讯研究院摘要&#xff1a;工业革命以后的“自动化”概念追求的是机器自动生产&#xff0c;本质是“机器替人”&#xff0c;强调在完全不需要人的情况下进行不间断的大规模机器生产&#xff1b;而“智能化”追求的是机器的柔性生产&#xff0c;本质是“人机协…

Opencv——图像模糊

1、代码如下&#xff1a; #include "stdafx.h" #include <opencv2/opencv.hpp>using namespace cv;int main() {Mat srcImage imread("小狗1.jpg");imshow("原图像", srcImage);Mat dstImage;blur(srcImage, dstImage, Size(5, 5));imsh…

Android开发中依赖注入的应用

什么是依赖注入&#xff1f; 依赖是指一个对象持有其他对象的引用。依赖注入则是将这些依赖对象传递给被依赖对象&#xff0c;而不是被依赖对象自己创建这些对象。 public class MyClass{private AnotherClass mAnotherObject;public MyClass(){mAnotherObject new AnotherCla…

工业富联2018年报来了!上市后首张成绩单大起底

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云…

Opencv——图像膨胀

1、代码如下&#xff1a; #include "stdafx.h" #include <opencv2/opencv.hpp>using namespace cv;int main() {Mat srcImage imread("小狗1.jpg");imshow("原图像", srcImage);Mat dstImage;Mat element getStructuringElement(MORPH_…

linux下的一些操作命令

1.切换到root账号下&#xff1a; su root 输入密码&#xff1b; 2.修改root账号密码&#xff1a; sudo passwd root 输入密码&#xff1b; 3.cat用法&#xff1a; 查看文件内容 cat 文件名 创建文件 cat > index.php <<EOF >hello >world >EOF 要…

深度学习背后的基础-神经网络揭秘

来源&#xff1a;混沌巡洋舰摘要&#xff1a;最近&#xff0c; 深度学习三杰获得了计算机界最重要的图灵奖&#xff0c; 它们的贡献都集中在对深度学习的根据神经网络的理论突破。 今天我们看到的所有和人工智能有关的伟大成就&#xff0c; 从阿法狗到自动驾驶&#xff0c; 从海…

Opencv——灰度变换、直方图均衡化

1、代码如下&#xff1a; #include "stdafx.h" #include <opencv2/opencv.hpp>using namespace cv;int main() {Mat srcImage imread("lena.bmp");Mat grayImage;cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);Mat dstImage;equalizeHist(grayIm…

并发模型之——共享内存模型(线程与锁)理论篇

这里我们使用Java的线程与锁来解析共享内存模型&#xff1b;做过java开发并且了解线程安全问题的知道&#xff0c;要使某段代码是线程安全的那必须要满足两个条件&#xff1a;内存可见性、原子性&#xff1b; 内存可见性 在JVM规定多个线程进行通讯是通过共享变量进行的&a…

谷歌员工怒了 900人联名抗议 刚成立的AI道德委员会处境尴尬

来源&#xff1a;网易智能谷歌员工又怒了。3月26日&#xff0c;谷歌宣布成立人工智能项目外部顾问委员会&#xff0c;该委员会将与谷歌就面部识别和公平性等人工智能的主要问题进行磋商。争议的焦点在于&#xff0c;谷歌将保守派传统基金会(Heritage Foundation)主席凯科尔斯詹…