数据结构与算法的基数排序是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"数据结构与算法的基数排序是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"数据结构与算法的基数排序是什么"吧!基数排序鸿蒙官方战略合作
千家信息网最后更新 2026年11月02日数据结构与算法的基数排序是什么
本篇内容主要讲解"数据结构与算法的基数排序是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"数据结构与算法的基数排序是什么"吧!
基数排序
鸿蒙官方战略合作共建--HarmonyOS技术社区
基数排序(radix sort)属于"分配式排序"(distribution sort),又称为"桶子法"(bucket sort)或bin sort,顾明思议,它是通过键值的各个位的值,将要排序的元素分配至某些桶中,达到排序的作用。
基数排序属于稳定性的排序,基数排序法是效率高的稳定性排序法。
基数排序是桶排序的扩展。
基数排序是1887年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。
排序的基本思想
将所有待比较的值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
代码案例
package com.xie.sort; public class RadixSort { public static void main(String[] args) { int[] arr = new int[8000000]; for (int i = 0; i < 8000000; i++) { arr[i] = (int)(Math.random()*800000000); } long start = System.currentTimeMillis(); radixSort(arr); long end = System.currentTimeMillis(); System.out.println("耗时:"+(end-start)+"ms"); /* 800万数据,耗时:939ms */ } //基数排序 public static void radixSort(int[] arr) { int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] > max) { max = arr[i]; } } //数组中的最长位数 int maxLength = (max + "").length(); //第1轮(针对每个元素的个位进行排序处理) //定义一个二维数组,表示10个桶,每个桶就是一个一维数组 //1.二维数组包含10个一维数组 //2.为了防止在放入数的时候,数据溢出,则每个一维数组(桶),大小定为arr.length //3.基数排序是使用空间换时间的经典算法 int[][] bucket = new int[10][arr.length]; //为了记录每个桶中,实际存放了多少数据,我们定义一个一维数组来记录各个桶的每次放入的数据的个数。 //bucketElementCounts[0],记录的就是bucket[0]桶的放入数据的个数。 int[] bucketElementCounts = new int[10]; //按照桶的顺序(一维数组的下标依次取出数据,放入原来数组) int index = 0; for (int i = 0, n = 10; i < maxLength; i++, n *= 10) { for (int j = 0; j < arr.length; j++) { //取出位数 int digitOfElement = arr[j] / n % 10; //让如对应的桶中 bucket[digitOfElement][bucketElementCounts[digitOfElement]] = arr[j]; bucketElementCounts[digitOfElement]++; } index = 0; //遍历每个桶,并将桶中的数据,放入原数组 for (int k = 0; k < bucketElementCounts.length; k++) { //如果桶中有数据,才放入到原数组 if (bucketElementCounts[k] != 0) { //循环桶中第k个桶(即第k个一维数组),放入。 for (int l = 0; l < bucketElementCounts[k]; l++) { //取出元素放入arr arr[index] = bucket[k][l]; index++; } } bucketElementCounts[k] = 0; } } } }基数排序说明
基数排序是拿空间换时间的,对海量数据进行排序时,容易造成OutOfMemoryError.
基数排序时稳定的。【注:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种算法是稳定的,否则不稳定】。
对于有负数的数组进行基数排序
到此,相信大家对"数据结构与算法的基数排序是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
排序
基数
数组
数据
一维
算法
序列
数据结构
结构
个位
位数
元素
最低
个数
内容
实际
就是
数位
时间
稳定性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会
互联网和科技技术
今日互联网科技
互联网科技的英文
兼蜜互联网科技
长亮科技 互联网金融
互联网科技宣传片
美国互联网前沿科技
汉立互联网科技有限公司联系电话
以后互联网后是啥科技
科技与互联网哪个更好
宝灵互联网科技有限公司
长沙互联网科技
无锡工业互联网科技有限公司
杭州披云加互联网科技有限公司
广州互联网高科技取餐柜
广州有谷有贝互联网科技有限公司
陕西彩京云互联网科技有限公司
广东猫王互联网科技有限公司电话
伍佰万互联网科技是干嘛的
互联网金融科技
鸠鸠互联网科技
互联网科技垄断
互联网金融公司科技
一五八零互联网科技
互联网科技生活的内容
注册互联网科技公司经营范围大全
工业互联网等科技实现智能化赋能
互联网科技年终奖
山东蛋芒互联网科技有限公司
