排序算法-基数排序

    基数排序是一种非比较排序算法,它将待排序的数字按照位数进行排序。基数排序的思想是先按照个位数进行排序,然后按照十位数进行排序,接着按照百位数进行排序,以此类推,直到最高位排序完成。

    基数排序的步骤如下:

 

代码思路:

class RadixSort{public static void redixSort(int[] arr){if (arr==null || arr.length <2){return;}redixSort(arr,0,arr.length-1,maxbits(arr));}//求最大数有多少位private static int maxbits(int[] arr) {int max = Integer.MIN_VALUE;for(int a: arr){max=Math.max(max,a);}int res=0;while (max != 0){res++;max/=10;}return res;}private static void redixSort(int[] arr, int l, int r, int digit) {final int radix=10;int i=0,j=0;//定义一个与arr长度相等的数组int[] help =new int[r-l+1];//有多少位就循环几次,从个位开始for (int d=1;d<=digit;d++){//count和count‘都用count表示//count[0] 当前位(d位)是0的数字有多少个//count[1] 当前位(d位)是(0和1)的数字有多少个//count[2] 当前位(d位)是(0和1和2)的数字有多少个//count[i] 当前位(d位)是(0~i)的数字有多少个int[] count=new int[radix];//count[0..9]//countfor (i=l;i<=r;i++){j=getDigit(arr[i],d);count[j]++;}//count’for (i=1;i<radix;i++){count[i]=count[i]+count[i-1];}//从右往左遍历,对应的数放到help中for (i=r;i>=l;i--){j=getDigit(arr[i],d);help[count[j]-1] = arr[i];count[j]--;}//help数组赋值给结果数组for (i=l, j=0;i<=r;i++,j++){arr[i] =help[j];}}}//取出当前数对应位数的数,如x=109,d=1,相当于取109个位上的数,即9private static int getDigit(int x,int d){return ((x/((int) Math.pow(10,d-1))) % 10);}
}

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

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

相关文章

设计模式代码实战-桥接模式

1、问题描述 小明家有一个万能遥控器&#xff0c;能够支持多个品牌的电视。每个电视可以执行开机、关机和切换频道的操作&#xff0c;请你使用桥接模式模拟这个操作。 输入示例 6 0 2 1 2 0 4 0 3 1 4 1 3 输出示例 Sony TV is ON TCL TV is ON Switching Sony TV channel S…

【菜狗学前端】原生Ajax笔记(包含原生ajax的get/post传参方式、返回数据等)

这回图片少&#xff0c;给手动替换了~祝看得愉快&#xff0c;学的顺畅&#xff01;哈哈 一 原生ajax经典四步 (一) 原生ajax经典四步 第一步&#xff1a;创建网络请求的AJAX对象&#xff08;使用XMLHttpRequest&#xff09; JavaScript let xhr new XMLHttpRequest() 第二…

QQ农场-phpYeFarm添加数据教程

前置知识 plugin\qqfarm\core\data D:\study-project\testweb\upload\source\plugin\qqfarm\core\data 也就是plugin\qqfarm\core\data是一个缓存文件,如果更新农场数据后,必须要删除才可以 解决种子限制(必须要做才可以添加成功) 你不更改加入了id大于2000直接删除种子 D…

Vulnhub靶机 DC-2渗透详细过程

VulnHub靶机 DC-2 打靶 目录 VulnHub靶机 DC-2 打靶一、将靶机导入到虚拟机当中二、攻击方式主机发现端口扫描服务探针爆破目录web渗透信息收集扫描探针登录密码爆破SSH远程登录rbash提权 一、将靶机导入到虚拟机当中 靶机地址&#xff1a; https://www.vulnhub.com/entry/dc…

进制转换总结

目录 其它进制转十进制 十进制转其它进制 二八十六进制间转换 2进制(BIN): 0,1&#xff0c;满2进1.以0b或0B开头。8进制(OCT): 0-7 &#xff0c;满8进1.以数字0o或者0O开头表示。 10进制(DEC): 0-9&#xff0c;满10进1。 16进制(HEX): 0-9及A(10)-F(15)&#xff0c;满16进…

未来的前端框架技术发展趋势

​ 福利开篇推荐 老铁们,你们是否平常开发有这样的问题: 1.需要公网访问内网的一个服务? 2.需要一个开发环境直接支持https,但是弄本地证书既不合法,又很麻烦? 3.本地有强劲的服务器,需要对公网提供服务,但是拉宽带既贵,又麻烦? 4.有云主机,但同时云主机需要访问内部的服…

sample gpt 无限长上下文

参考地址 https://aistudio.baidu.com/projectdetail/7723195 import mathimport paddle import paddle.nn as nn import paddle.nn.functional as Fclass MaskMultiHeadAttention(nn.Layer):def __init__(self, hidden_size, num_heads):super(MaskMultiHeadAttention, self…

信息系统项目管理师0051:管理基础(4信息系统管理—4.1管理方法—4.1.1管理基础)

点击查看专栏目录 文章目录 第四章 信息系统管理4.1管理方法4.1.1管理基础1.层次结构2.系统管理第四章 信息系统管理 在信息技术和数据资源要素的推动下,社会各领域已经并正在加速进入数字化的全新发展时期,基于智能、网络和大数据的新经济业态正在形成,从“数字融合”向“数…

Spark开窗函数之ROW

Spark 1.5.x版本以后,在Spark SQL和DataFrame中引入了开窗函数,其中比较常用的开窗函数就是row_number 该函数的作用是根据表中字段进行分组,然后根据表中的字段排序;其实就是根据其排序顺序,给组中的每条记录添 加一个序号;且每组的序号都是从1开始,可利用它的这个特性进行分组…

【Java虚拟机】三色标记、增量更新、原始快照、记忆集与卡表

三色标记、增量更新、原始快照、记忆集与卡表 三色标记基本原来错标、漏标错标漏标 增量更新基本原理写屏障 原始快照基本原理为什么G1使用原始快照而不用增量更新。 记忆集与卡表 三色标记 基本原来 三色标记是JVM的垃圾收集器用于标记对象是否存活的一种方法。 三色是指黑…

学习java第四十三天

Spring AOP相关术语 &#xff08;1&#xff09;切面&#xff08;Aspect&#xff09;&#xff1a;切面是通知和切点的结合。通知和切点共同定义了切面的全部内容。 &#xff08;2&#xff09;连接点&#xff08;Join point&#xff09;&#xff1a;指方法&#xff0c;在Spring…

物联网智能仓储系统毕业设计报告

物联网智能仓储系统毕业设计报告 一、设计背景 随着经济的持续发展和电子商务的蓬勃兴起&#xff0c;仓储物流行业面临着前所未有的挑战。传统的仓储管理方式已无法满足现代商业对效率和精度的要求。因此&#xff0c;设计一款物联网智能仓储系统显得尤为重要&#xff0c;它将…

Servlet实现常用功能及其他方法

getParameter 获取body或url中指定的key/value值 String classIdreq.getParameter("classId"); getQueryString 获取请求的所有查询参数key,values1 String queryStringreq.getQueryString(); from表单提交 前端通过from表单提交用户名和密码 <!DOCTYPE htm…

DataX配置案例@Source:MySQL,Sink:HDFS [SQLMode] 及空值如何存储

HFDS Writer并未提供nullFormat参数&#xff1a;也就是用户并不能自定义null值写到HFDS文件中的存储格式。默认情况下&#xff0c;HFDS Writer会将null值存储为空字符串&#xff08;&#xff09;&#xff0c;而Hive默认的null值存储格式为\N。所以后期将DataX同步的文件导入Hiv…

Windows本地搭建开源的stable-diffusion-webui用于AIGC文生图

开源的stable-diffusion-webui来自于https://github.com/AUTOMATIC1111/stable-diffusion-webui 在windows搭建似乎比较方便些,需要python3.8;比如CUDA模式下,显卡驱动比较好安装(若使用cuda需要更新显卡驱动在https://www.nvidia.com/download/index.aspx?lang=en-us )…

docker swarm 详细安装配置步骤

在 Linux 环境下安装和配置 Docker Swarm 的详细步骤。假设您已经安装了 Docker&#xff0c;并且使用的 Docker 版本 > 1.12&#xff0c;因为从这个版本开始&#xff0c;Swarm 模式已集成到 Docker 引擎中。这里以 Ubuntu 为例&#xff0c;但基本步骤适用于其他 Linux 发行版…

Zookeeper和Kafka的部署

目录 一、Zookeeper的基本概念 1. Zookeeper定义 2. Zookeeper工作机制 3. Zookeeper特点 4. Zookeeper数据结构 5. Zookeeper应用场景 5.1 统一命名服务 5.2 统一配置管理 5.3 统一集群管理 5.4 服务器动态上下线 5.5 软负载均衡 6. Zookeeper 选举机制 6.1 第一…

【opencv】示例-text_skewness_correction.cpp 校正文本图像的倾斜度

// 此教程展示了如何矫正文本的偏斜。 // 程序接受一个偏斜的源图像作为输入&#xff0c;并显示非偏斜的文本。#include <opencv2/core.hpp> // 包含OpenCV核心功能的头文件 #include <opencv2/imgcodecs.hpp> // 包含OpenCV图像编解码功能的头文件 #include <o…

每日练习——leetcode402. 移掉 K 位数字和17. 电话号码的字母组合

目录 402. 移掉 K 位数字 题目描述 解题思路 代码实现 17. 电话号码的字母组合 题目描述 解题思路 代码实现 402. 移掉 K 位数字 题目描述 给你一个以字符串表示的非负整数 num 和一个整数 k &#xff0c;移除这个数中的 k 位数字&#xff0c;使得剩下的数字最小。请…

Python杂记--使用asyncio构建HTTP代理服务器

Python杂记--使用asyncio构建HTTP代理服务器 引言基础知识代码实现 引言 本文将介绍 HTTP 代理的基本原理&#xff0c;并带领读者构建一个自己的 HTTP 代理服务器。代码中不会涉及到任何第三方库&#xff0c;全部由 asyncio 实现&#xff0c;性能优秀&#xff0c;安全可靠。 基…