算法学习之基数排序

万象RK3506-EG1800网关使用说明 摘要:HD-RK3506-EG1800是一款高性能工业物联网边缘计算网关,支持Buildroot和Ubuntu双系统。文档详细介绍了网关的网络配置(包括ETH0/ETH1的静态IP设置、WiFi连接)、时钟同步、HSL软件安装配置(含开机自启动服务)、系统日志优化以及刷机操作指南(Loader/Maskrom模式)。特别提供了基于lighttpd的网页管理方案,通过HTML界面实现网络参数可视化配置,包含身份验证、实时状态显示和表单提交功能。网关默认ETH0固定IP为192.168.1.10,提供完整的CL 阅读详情

原理

基数排序是桶排序的升级,桶排序的原理是利用数组的有序性进行排序,但是对存储空间的浪费极大

基数排序只需要10个桶即可(0~9),其原理是对排序元素的每一位进行排序,而非元素本身

其原理很简单,即若位数不同,位数大的一定大于位数小的,若最高位相同则比较次一位

思路

  • 将所有元素按照最低位,分别放入桶中,相同位数的值如果相同则放入同一个桶

  • 再将桶中的数组取出到数组中,此时得到按照最低位排序的数组

  • 按照位次循环上述操作,若元素在某一位上没有值,按0来处理

代码

/**
     * 基数排序原理:桶排序的升级,要排序的数最高有多少位就需循环几次,第一次按照个位排序,第二次按照十位排序,依次排序,若有的数没有当前位的数,则视为0
     * 其实原理很简单: 若位数不同,位数大的一定大于位数小的,若位数相同则比较最高位,若最高位相同,则比较次一位
     * @param arr 数组
     * @param n 数组中的数的最高位,即循环次数
     * @return
     */
    public static int[] radixSort(int[] arr , int n){
        // 因为若相同位数上的数相等要放入同一个桶内,最多有arr.length个数的相同位数上的数相等,所以一个桶最多可以放arr.length个数,0~9共有10个数
        int temp[][] = new int[arr.length][10];

        // 初始化数组,若没有放入数则为-1跳过
        for (int i = 0 ; i < arr.length ; i++){
            for (int j = 0 ; j < 10 ; j++){
                temp[i][j] = -1 ;
            }
        }
        int t = 0 ;
        // i代表本次要排序的位数
        for (int i = 0 ; i < n ; i++){
            for (int j = 0 ; j < arr.length ; j++){
                // 若该位置上不为-1,则表示已经放入数了,放入桶的下一个位置
                while (temp[t][getNum(arr[j],i)] != -1)
                {
                    t++;
                }
                temp[t][getNum(arr[j],i)] = arr[j];
                t=0;
            }

            int index = 0;
            // 根据桶的顺序对数组进行排序
            for (int j = 0 ; j < 10 ; j++){
                while (temp[t][j] != -1) {
                    arr[index] = temp[t][j];
                    temp[t][j] = -1;
                    index++;
                    t++;
                }
                t=0;
            }
            t=0;
            for (int l = 0 ; l < arr.length ; l++){
                System.out.print(arr[l] + " ");
            }
            System.out.println();
        }
        return arr;
    }

    // 取第n位数
    public static int getNum(int num , int n){
        for (int i = 0 ; i < n ; i++){
            num = num/10;
        }
        num = num % 10;
        return num;
    }

    //  判断位数
    public static int judgelen(int num){
        int len = 0;
        while (num>0){
            num = num/10;
            len++;
        }
        return len;
    }

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 发表位置 ECCV 2020 摘要 作者提出了一种基于得分的黑盒Square attack,该模型不依赖于模型的局部梯度信息,因此可以绕过梯度隐藏防御攻击。Square Attack是一种随机搜索方法,它在随机位置选择局部的方形更新,使得每次迭代时扰动近似位于可行集的边界。 背景 当涉及到对安全至关重要的机器学习应用时,对抗性的例子尤其值得 阅读详情

相关推荐

MFRC522防冲突机制详解:当两张IC卡同时靠近读写器,会发生什么?

本文深入解析了MFRC522芯片在多张IC卡同时靠近RFID读写器时的防冲突机制,重点介绍了二叉树搜索算法在比特级的实现原理。通过详细的寄存器配置优化和实际工程案例,展示了如何有效解决信号碰撞问题,提升多卡场景下的读写性能。

weixin_29191669的博客 429

排序算法之基数排序

一、例子演示 现有如下序列:{3,44,38,5,47,15,36,32,50},现在要利用基数排序算法对这9个元素进行从小到大的排序,怎么排呢? 首先,排序的初始化状态如图1所示 图1:初始化状态 第二,将这9个元素按个位分配到相应的位置上,如图2所示 ...

xiaoxi_hahaha的博客 2万+

避坑指南:在Ubuntu 22.04上配置UR5e与ROS2 Humble真机通信的完整流程

本文详细介绍了在Ubuntu 22.04上配置UR5e机械臂与ROS2 Humble真机通信的完整流程,包括环境准备、网络配置、URCap安装、ROS2驱动部署及控制器状态验证等关键步骤。特别针对常见问题如网络连接失败、驱动启动错误等提供了实用解决方案,帮助工程师高效完成UR5e与ROS2的集成工作。

weixin_30790841的博客 465

基数排序

因为思想简单,所以就直接写出他的原理吧: 所谓基是指每个数他某一位的数字,比如948按基展开就是8,4,9,由于取模的良好特性我们便从个位数开始展开这个基,然后我们利用桶子可以推出他们临时优先级,直到最后一位的桶排结束,优先级别则整体确定。 比如:948 947 993 942 94 这四个数字 按个位优先级别是:942 993 94 947 948 按十位优先级别:942 947 94...

qq_43605752的博客 284

并网逆变器学习笔记5---三电平DPWM

三电平DPWM

圆桌骑士的博客 1万+

从零开始:如何用大语言模型构建你的第一个路径规划智能体

本文详细介绍了如何利用大语言模型(LLM)构建路径规划智能体,从基础概念到实战案例,涵盖TSP和CVRP问题的解决方案。通过选择合适的LLM模型、设计有效的提示工程和实现自我验证,即使没有运筹学背景也能快速上手。文章还提供了部署与优化智能体的实用技巧,帮助读者在物流配送、机器人导航等领域应用这一技术。

weixin_28256233的博客 488

排序算法——基数排序(桶排序)

排序算法——基数排序(桶排序)

rookie_lbt的博客 1180

如何在 SAP BTP 上使用 Integration Suite 消费 S/4HANA Cloud API

SAP Integration Suite是一个集成平台即服务(iPaaS),允许开发人员顺利地将内部部署和基于云的应用程序和流程与SAP管理的工具和预构建内容进行集成。登录 SAP Business Technology Platform Cockpit,进入 integration suite:再点击 API management 进入 API Portal:或者直接从收藏夹里打开链接:https://304a49cetrial.integrationsuitetrial-apiportal.cfapp

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1699

算法学习-计数排序和基数排序

计数排序,基数排序-C++语言实现

qq_43054786的博客 938

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9551

YOLOv11知识蒸馏,实现无损涨点,包含逻辑蒸馏和特征蒸馏中的不同蒸馏方法,适用专栏内的所有模型

知识蒸馏(Knowledge Distillation)是由 Hinton 等人在 2015 年提出来的,主要是用一个复杂的教师模型去指导一个简单的学生模型训练,这样能让学生模型在保持高精度的同时,还能减少计算量。本文便是讲解如何针对的原始模型以及改进后的模型进行知识蒸馏,轻松实现无损涨点。知识蒸馏的核心在于利用已训练好的复杂模型(教师模型)去指导一个更简单的模型(学生模型)进行训练,以此让学生模型在保留较高精度的同时,降低计算成本。特征蒸馏(Feature Distillation)是知识蒸馏的一种形式,

Limiiiing的博客 4962

【算法学习】 基数排序算法

基数排序是在桶排序的基础上发展而来的,两种排序都是分配排序的高级实现。将数组中的所有数按位进行分类,由于每一位数的大小都在0~9之间,因此创建下标为0~9的十个数组,根据需要对数进行存储。 图解: 例如对{12 45 3 15 61 154 242 58 46 9}进行排序的步骤如下: 第一轮,建立10个桶,也就是数组,将数组中的数依次取出,按照个位数字的不同依次放入不同的桶中: ...

愿万事胜意 432

Agent 智能体学习指南:从入门到求职的完整路线

AI Agent 不是更长的 prompt,而是一类系统设计——模型在受控环境里观察状态、选择动作、调用工具、接收反馈。本文系统梳理 Agent 的 5 个核心概念、7 个关键模块(Goal/State/Context/Tools/Loop/Guardrails/Eval)、三条学习路线(工程落地/研究算法/求职作品)、框架选型策略(LangGraph/OpenAI Agents SDK/Pydantic AI 等场景推荐),以及可执行的 7 天最小项目计划(从概念到简历 bullet)。

program哲学 229

【算法学习】排序算法 基数排序

文章目录1. 概述2. 计数排序及实现3. 基数排序(1) 简要介绍(2) 具体实现:10进制低位优先基数排序(3) 优化:65536进制低位优先基数排序(3) 毒瘤实现:256进制低位优先基数排序 1. 概述 我们学过很多排序算法,简单的如冒泡排序、插入排序,麻烦一点的如希尔排序(还不一定写得对)、堆排序,派的上用场的如归并排序、快速排序。实际上,快速排序和归并排序已经够用了,它们的平均时间复杂度为 O(nlog⁡n)O(n\log n)O(nlogn) ,任何基于比较的排序算法的时间复杂度都不可能比这

memcpy0的博客 2591

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

算法学习之排序学习之基数排序,计数排序及java实现

先介绍一下概念   计数排序和基数排序都是非比较排序,就是不用进行比较就能排序,相对于堆排序,快速排序,插入排序等都是比较排序,比较排序算法的最坏情况下届都要做0(nlgn)次的比较,堆排序和合并排序都是渐近最有的比较排序算法,线性时间排序的时间复杂度都是O(n)。   计数排序的基本思想,假设n个输入元素中的每一个都是介于0到k的整数,此处k为某个整数。当k=O(n)时,计数排序运行时间是O

逆风奔跑。。不要去考虑什么天赋异禀,一切都来自经历和渴望。 1903

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

《算法导论》学习之基数排序

基数排序是一种非比较排序,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。     基数排序的时间复杂度为O(n),但是不一定优于O(nlgn),因为基数排序的时间复杂度前面有个系数K,如果K比较大的话,那其时间复杂度将超过O(nlgn)     其具体原理如下:先前数值按位进行拆分,

lyapple2008的专栏 715

IEM模型,地表粗糙度模拟

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

学习回顾算法(基数排序算法)

基数排序概述基数排序(radix sort)属于分配式排序,又称为“桶子法”(bucket sort)或bin sort。顾名思义,它是透过键值,把要排序的元素分配到已经排好优先级的“桶”中,以达到排序的作用。比如数字中0,1,2,3,4,5,6,7,8,9。就是已经排好序的桶了。在某些时候基数排序的效率高于其他排序算法。基数排序算法原理基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到

课前的博客 397

算法导论学习笔记——基数排序

/** * 基数排序:n个d位数进行排序,先从最低有效位进行,由于每位数字都界于0到9(只考虑整数), * 可以用计数排序对每一位进行排序,重复这一过程直到对所有的d位数字都进行了排序。 * 由于计数排序的复杂度为O(n+k),所以基数排序的时间复杂度为O(d(n+k))

FG2006的专栏 1928

算法学习(七)——基数排序

算法学习(七)——基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序

archer的技术故事 756

数据结构与算法学习笔记——基数排序、总结

基数排序

qq_29384339的博客 435

基数排序的空间复杂度_算法学习笔记(22): 基数排序

任何计算机相关专业的学生都学过很多排序算法,然而在算法竞赛中,我们会发现大部分排序算法都不怎么用得上(尤其是那堆 算法),快读排序和归并排序已经基本够用了,它们的平均时间复杂度都是 。实际上,学术上已经有证明,任何基于比较的排序算法的时间复杂度不能比这更优了。也就是说,如果不对待排序数据的性质有特殊要求,只任意给出偏序关系,那不可能存在小于 的排序算法。但在竞赛中,这样的复杂度有时是不够的。...

weixin_39864601的博客 575

算法学习笔记--基数排序

基数排序基数排序(Radix Sort)是对桶排序的改进和推广。单关键字和多关键字文件中任一记录R[i]的关键字均由d个分量k0ik1i...kd−1ik^0_ik^1_i...k^{d-1}_i构成。 若这dd个分量中每个分量都是一个独立的关键字,则文件是多个关键字的(如扑克牌有两个关键字:点数和花色);否则文件是单关键字的kji(0≤j<d)k^j_i(0≤j<d)只不过是关键字中其中的一位(

y1j2x34的专栏 382

学习笔记-排序算法(基数排序)

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

weixin_44939996的博客 271

数据结构和算法学习之基数排序

数据结构和算法学习之基数排序

m0_55895641的博客 124

算法学习记录010_基数排序

package com.study.data.structures.sort; import java.util.Arrays; /** * 基数排序 * 所有自然数都是由0到9构成的,所以准备一个二维数组来进行数据的装填 * 定义二维数组, * int[][] arr = new int[11][arr.length] * {43, 986, 7, 21, 591, 87} * <p> * 第一轮: * 依次取出待排序元素,并获取该元素的个位数放到其对应的数组中。例如:4

Duckdan的博客 446

三郎数据结构算法学习笔记:基数排序

三郎数据结构算法学习笔记:基数排序排序介绍思想图示运行结果源代码 排序介绍 基数排序(radix sort)属于“分配式排序”(distribution sort), 又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 基数排序(Radix Sort)是桶排序的扩展 基数排序是 1887 年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不

m0_51684972的博客 260
上一篇: 算法学习之快速排序
下一篇: 算法学习之希尔排序
管管儿
博客等级 码龄7年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值