基数排序-八大排序(七)

八大排序算法之七:基数排序 算法思想 思想: 通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。 =>将所有的待比较数值统一为同样的数位长度,数位较短的数前面补0。然后,从最低位开始,依次进行排序(每一位进行一次,一共有多少位,就进行多少次排序)。 基数排序的实现思路: 用于排序过程的“桶” 假设用于排序的数均为正整数,那么在这里设置桶的个数为10。又因为每个桶,实际上也是一个一维数组。 所以,定义一个二维数组,来实现排序过程中对于“桶”的要求: int[][] bucket = new int[10 阅读详情

说明:

1. 基数排序是对传统桶排序的扩展,速度很快
2. 基数排序是经典的空间换时间的方式,占用内存很大,当对海量数据排序时 容易出现outofmenmoryerroor
3. 技术排序是稳定的即原序列r[i]=r[j] ,r[i]在前 则排序后r[i]仍在前,顺序不变
4. 基数排序属于“分配式排序,又称“桶字法”,它是通过键值的各个位的值将要排序的元素分配到某些桶中,达到排序的目的

先写一个排序方法

 public static void radixSort(int []arr) {
        /*1.定义一个二维数组,表示10个数,每个桶就是一个一维数组
         * 2.二维数组包含10个一维数组
         * 3.为了防止放入数的时候数据溢出 则每个一维数组(桶)大小定为arr.length
         * */
        int[][] bucket = new int[10][arr.length];
        /*为了记录每个桶中实际存放了多少个数据,我们定义一个一维数组来记录各个
         * 桶的每次放入的数据的个数
         * 可以理解为:buckElementCounts[0],记录的就是bucket[0]桶放入的数据的个数
         * */

        int bucketElementCounts[] = new int[10];
        for (int j = 0, n = 1; j < arr.length; j++, n *= 10) {
            for (int i = 0; i < arr.length; i++) {
                //取出每个元素的个位的值
                int digitOfElement = arr[i] / n % 10;
                //放入对应的桶中
                bucket[digitOfElement][bucketElementCounts[digitOfElement]] = arr[i];
                bucketElementCounts[digitOfElement]++;
            }


            //按照这个桶的顺序
            int index = 0;
            for (int i = 0; i < bucketElementCounts.length; i++) {
                if (bucketElementCounts[i] != 0) {
                    for (int l = 0; l < bucketElementCounts[i]; l++) {
//                    取出元素放到arr
                        arr[index] = bucket[i][l];
                        index++;
                    }
                }
                bucketElementCounts[i] = 0;
            }
        }
    }

然后测试

  public static void main(String[] args) {
        int []arr={6,4,2,4,1,5,6,7,2,5,634};
        radixSort(arr);
        System.out.println(Arrays.toString(arr));
    }

这是结果图

在这里插入图片描述

Materials Studio与LAMMPS联合作战:如何用msi2lmp.exe完美转换聚合物模型(含PCFF力场配置) 本文详细解析了如何利用msi2lmp.exe工具将Materials Studio中的聚合物模型高效、准确地转换为LAMMPS可识别的data文件,并重点配置PCFF力场。文章提供了从MS模型构建、文件导出到命令行转换、参数调整及转换后验证的全流程实战指南与避坑技巧,旨在帮助研究者解决模型转换中的常见问题,实现跨平台分子动力学模拟的无缝衔接。 阅读详情

相关推荐

浅谈专项测试之弱网络测试

浅谈专项测试之弱网络测试 一.弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境,大部分用户主要使用4G,3G,2G等网络,另外因为移动端产品使用的场景多变,如进公交,上地铁,坐电梯,使得弱网测试显得尤为重要。考虑到各种场景的客户端展示及容错,提升产品的印象和用户体验,提高产品的健壮性,弱网测试必不可少。 二.弱网络测试建议 网下需要进行功能点测试,无网络测试,网络切换测试等,测试过程除了关注功能点的实现,还应关注用户体验等各个方面 三.弱网络测试通用功能点总结 四.弱网络测试用例实例

ITstudy001的博客 1011

八大排序-基数排序(七)

八大排序-基数排序(七) 基数排序原理:不需要进行关键字的比较,只需要对关键字进行“分配”与“收集”即可完成。 对数组先去 个位数放入相对应的桶中,放完之后在按桶的索引依次取出来。 当个位数放入取出后,再对十位数放入相对应的桶中,放完之后在按桶的索引依次取出来。 当十位数放入取出后,再对百位数放入相对应的桶中,放完之后在按桶的索引依次取出来,就完成了基数排序 5.这个总共经历了三次循环,数组中最大有多少位数就进行多少次循环。 6.在数组的过程中,还有一个问题那就是遇到2个或几个相同

Xun_independent的博客 313

ADK 第一篇 Google Agent Development Kit 简介

是一个灵活且模块化的框架,专为开发和部署AI智能体而设计。虽然ADK针对Gemini和Google生态系统进行了优化,但它与模型无关、与部署环境无关,并兼容其他框架。ADK的核心理念是让智能体开发更接近传统软件开发模式,从而帮助开发者更轻松地构建、部署和编排智能体架构——无论是处理简单任务,还是管理复杂工作流。:利用预置工具、自定义函数、OpenAPI规范或集成现有工具,赋予智能体多样化能力,实现与谷歌生态系统的深度整合。

2501_90353350的博客 3043

八大排序之——基数排序(七)

概述 图示 代码

157

思科模拟器-实验16:三层交换 VLAN 互访配置

【实验内容】 (1)按实验线路连接图进行连接。按照实验线路连接图分别配置各台计算机IP 地 址。 (2) 按照实验线路连接图,在SW1和SW2上分别完成VLAN配置,并在VLAN中添加相应的端口成员,同时配置Trunk端口。同时测试各计算机之间是否可以相互ping 通。 Switch>en Switch#config t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#vlan 10 Switc

weixin_44270194的博客 4730

TypeError: XGBClassifier.fit() got an unexpected keyword argument ‘early_stopping_rounds‘ 解决方案

本文主要介绍了TypeError: XGBClassifier.fit() got an unexpected keyword argument 'early_stopping_rounds’解决方案,希望能对使用XGBoost的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

八大排序算法之七——基数排序

1、基本原理。//To do

Martian的博客 182

超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!

你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!

网络技术联盟站 1109

八大排序算法的python实现(七)基数排序

代码: #coding:utf-8 #author:徐卜灵 import math #print math.ceil(3.2) 向上取整4.0 #print math.floor(3.2) 向下取整3.0 #print math.log(100,10) base 为10 结果为2.0 def Radiz_sort(L): k = int(math.cei...

weixin_30666943的博客 64

【AHE数据集】历史/未来全球网格热排放数据 PF-AHF

AHE数据集

WW、forever的博客 128

人像美肤 人体美型 CVPR 2022 ABPN

人像美肤 CVPR 2022 ABPN

jacke121的专栏 842

用C语言实现简单的基数排序

八大排序算法有:冒泡排序、插入排序、选择排序、快速排序、希尔排序、堆排序、归并排序、基数排序。前面七种网上都有很多例子,但是最后一种基数排序却很少看到,所以我总结了一下,并且自己写了一个简单的实现。 基数排序是一种分配排序,其基本思想是:排序过程无须比较关键字,而是通过“分配”和“收集”过程来实现排序。它们的时间复杂度可达到线性O(n)。基数排序所做的事情,是对N位分别进行排序。从直觉上来看,人...

林愿留的博客 3064

基于Simulink的六旋翼无人机动力分配仿真建模示例

六旋翼无人机概述特点:高冗余度、增强的负载能力和更好的故障容忍性。关键组件电机与螺旋桨:提供升力和推力。电调(ESC):控制电机转速。IMU(惯性测量单元):包括加速度计和陀螺仪,用于姿态估计。飞控板:处理传感器数据并生成控制信号。应用场景:航拍摄影、农业监测、物流配送等。仿真目标搭建一个简化的六旋翼无人机动力分配模型,涵盖电机驱动、姿态控制及位置控制过程。分析不同条件下的性能指标(如响应时间、稳定性等),并探讨六旋翼无人机的设计优化。

xiaoheshang_123的博客 485

八大排序算法(5)基数排序

八大排序算法(5)基数排序

你要拥有一个你喜欢并且热爱的人生 8465

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

八大排序——基数排序

  基数排序   基数排序是在八大排序中相对来说叫简单的一种排序方法,基数排序也可以称作是“桶排序”,顾名思义,就是将数据放入一个一个地桶里面。在这里,我以一组数据“25,78,58,99,105,254,763,365,47,33,10,87”为例,来为大家先演示一遍基数排序的过程,在总结一下编程的思路,最后再将代码展示出来,这里,请大家注意我编程的思路,回去可以自己根据思路,将代码实现一下。...

weixin_42736024的博客 575

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

js实现八大排序

本文使用js实现数据结构中的八大排序算法:直接插入排序、shell排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、基数排序,并对比这八种排序算法的时间、空间复杂度以及稳定性,给出我们选择排序算法的主要依据。

YongxiaWu的博客 4843

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

八大排序算法的性质及特性比较

根据自己学习的知识对课后题中出现容易混淆且不容易理解的知识点小小的总结,主要是在八大排序的几项性质的比较和归纳。如有不对地方,敬请大家指正。1.时间复杂度 从时间复杂度上来看,直接插入排序、冒泡排序和简单选择排序平均时间复杂度都为O(n²),直接插入排序和冒泡排序最好情况下可以达到O(n)的数量级,而简单选择排序都是O(n²)。希尔排序在某个范围内可以达到O(n^1...

m0_58634471的博客 3758

八大排序基数排序

八大排序基数排序

m0_64616651的博客 483

八大排序算法详解——基数排序

基本思想基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 基数排序可以采用两种方式: LSD(Least Significant Digital):从待排序元素的最右边开始计算(如果是数字类型,即从最低位个位开始)。 MSD(Most Significan

cy__dream的博客 2783

【数据结构】八大排序

八大排序

2203_76003626的博客 3483

数据结构之八大排序总结

1、排序的概念:排序就是将一组数据按照一定的顺序,递增或递减排列起来。 2、排序的稳定性:对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。 3、内部排序与外部排序:内部排序指的是排序时需要将全部数据加载到内存中;外部排序是指所要排序的数据太大了不能同时在内存中进行。 4、八大排序:插入排序、希尔排序、选择排序、快速排序、冒泡排序、堆排序、归并排序、计数排...

一个金牛座 的程序员 8825

浅谈八大排序

首先,我们先说说排序的分类和特性: 一、排序的分类 内部排序和外部排序 (1) 内部:待排序记录存放在计算机随机存储器(内存)中进行的排序过程。 (2) 外部:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需要对外存进行访问的排序过程。 比较和非比较排序 (1)比较类:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排...

坏小哥 3582

八大排序指基数排序

一、基数排序的思想 基数排序也称“桶排序”。 它的基本思想就是:假设一组待排序数据,先对于数据基于个位排序,然后是基于百位排序,基于千位排序,最后使整个序列有序。 二、图解基数排序 给定一组待排序序列 [51 26 7 33 27 534 7648 649 67 49] 1、第一趟排序 按每个数组的个位数字归到相应的桶里,如下图所示: 第一趟排序过后将每个桶里的数据按顺序摘出来,...

qq_43411563的博客 327

八大排序之基数排序

基数排序基本介绍 基数排序(radix sort) 属于“分配式排序” (distribution sort) , 又称“桶子法” (bucket sort) 或 bin sort, 顾名思义, 它是通过键值的各个位的值, 将要排序的元素分配至某些“桶” 中, 达到排序的作用 基数排序法是属于稳定性的排序, 基数排序法的是效率高的稳定性排序法 基数排序(Radix Sort)是桶排序的扩展 基数排序是 1887 年赫尔曼· 何乐礼发明的。 它是这样实现的: 将整数按位数切割成不同的数字, 然后按每个

weixin_54379276的博客 298

基数排序

基数排序一、什么是基数排序二、基数排序的代码实现三、总结 一、什么是基数排序 基数排序属于非比较类排序——非比较类排序包括计数排序、基数排序、桶排序。 基数排序是由计数排序改善而来的,基数排序将整数或者字符串切分不同的数字或字符,然后按照低位先排序收集,接着高位排序收集,依次类推直到最高位。 动图演示 二、基数排序的代码实现 public static void sort(int[] arr)...

BORRISEE6的博客 1377

八大排序算法(面试被问到)

(通常不提)。此外,还可以直接调用进行排序。

qq_66767167的博客 2707
上一篇: 归并排序-八大排序(六)
下一篇: 数据结构算法面试总结
来来爱编程
博客等级 码龄7年 375粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值