数据结构与算法的基数排序是什么
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容主要讲解"数据结构与算法的基数排序是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"数据结构与算法的基数排序是什么"吧!基数排序鸿蒙官方战略合作
千家信息网最后更新 2025年01月18日数据结构与算法的基数排序是什么
本篇内容主要讲解"数据结构与算法的基数排序是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"数据结构与算法的基数排序是什么"吧!
基数排序
鸿蒙官方战略合作共建--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安全错误
数据库的锁怎样保障安全
weui 数据库
我的世界服务器对电脑的要求
国航 服务器 采购
我的世界人最多的服务器是什么
国家网络安全教育课心得体会
影楼怎么建立储存服务器
网络安全班会稿作文
医药市场数据库
网络安全整改通知单
技术合同交易数据库
北京易卓网络技术有限公司
昆山安全接入服务器地址
彩虹六号登不上服务器
鄂尔多斯恒新鸿业网络技术
网络安全行业为什么收入不高
网络安全运维工程师的书
永恒之塔怀旧服2区服务器在哪里
服务器长时间键盘无反应
数据库SQL in查询
30天清空数据库表
餐盟网络技术有限公司
服务器怎么设置ip
衢州电脑软件开发要求
计算机网络技术简称什么
数据库营销变味案例
软件开发工具阶段
加强网络安全知识的学习
计算机网络技术专业能报二建吗
数据库收缩之后还是很多
电脑服务器挑选