排序算法-基数排序(RadixSort)

算法数据结构(三十八)----DC3算法 后缀和数组 后缀数组其实代表所有的后缀字符串在排完名之后,从第0名到第7名依次写下来,这就是所谓的后缀数组 不会有相同的排名,因为长度不一样 生成后缀数组 1)暴力求解: 先生成所有的后缀字符串,复杂度O(N^2) 后缀字符串数量O(N),N个后缀字符串排序,代价O(N*logN) 2)DC3求解:O(N) 根据下标模3来分组,做了一个类似于递归的事情把这个问题快速解决,有一个前提,初始时,数组里头每个... 阅读详情
#include <vector>
#include <iostream>

using namespace std;

int pow10(int n)
{
	int result = 10;
	if (n==0)
	{
		return 1;
	}

	for (int i = 0;i < n;i++)
	{
		result *= 10;
	}
	return result;
}

void radixSort(int *L, int length, int k)
{
	int *L1 = new int[length];
	for (int i = 0;i < length;i++)
	{
		L1[i] = L[i];
	}
	vector<vector<int>> vec;
	for (int i = 0;i < 10;i++)
	{
		vec.push_back(vector<int>());
	}
	
	for (int i = 0;i < k;i++)
	{
		for (int j = 0;j < 10;j++)
		{
			vec[j].clear();
		}
		
		for (int j = 0;j < length;j++)
		{
			int p = pow10(i);
			vec[L1[j]%(p*10)/p].push_back(L1[j]);
		}
		int j = 0;
		for (int k = 0;k < 10; k++)
		{
			vector<int>::iterator iter = vec[k].begin();
			while (iter!= vec[k].end())
			{
				L1[j++] = *iter;
				iter++;
			}
		}
	}

	for (int i = 0;i < length;i++)
	{
		L[i] = L1[i];
	}
}

int main()
{
	int arr[21] = {1,2,3,4,5,7,6,8,9,123,456,789,963,852,741,654,321,987,258,369,147};
	radixSort(arr,21,3);
	for (int i = 0;i < 21;i++)
	{
		cout <<arr[i] <<endl;
	}
	system("pause");
	return 0;
}
</pre><pre name="code" class="cpp"><span style="font-size:18px;">欢迎批评指正O(∩_∩)O~</span>
JAVA:实现RadixSort基数排序算法(附完整源码) 阅读详情

相关推荐

Radix Sort (基数排序)排序算法

Radix Sort (基数排序)排序算法

GPU基数排序(CUDA radix sort)

GPU基数排序(CUDA radix sort) 引言:基数排序是具有固定迭代次数的排序算法, 其通过对最低位到最高位的一一比较,对数值排序。本文将介绍基数排序的并行实现方法,主要包括并行基数排序、并行合并、并行归约这三种算法。 本文全部代码连接: https://github.com/sty16/CUDA_radix_sort 1.基数排序算法 ​ 基数排序(radix so...

weixin_36709051的博客 5075

Synopsys SCL许可证服务器搭建详解:从安装到生成.dat文件

本文详细解析了Synopsys SCL许可证服务器的完整搭建流程,从系统环境准备、SCL安装到生成.dat文件。重点阐述了如何正确获取HOST ID、配置License文件以及调试常见故障,为数字芯片设计工程师提供了一套从零到一的实战避坑指南,确保EDA工具链稳定运行。

weixin_29306011的博客 611

RadixSort基数排序

核心算法: void RadixPass(RcdType rcd[], RcdType rcd1[], int n, int i, int count[], int pos[], int radix) { //对数组rcd中记录关键字的第i位计数,计算得到起始位置数组pos //按照起始位置数组pos将rcd中的记录复制到数组rcd1中 int k, j; for (k = 1; k <

Junhan's Blog 625

详解一典型的反激式开关电源方案

如图,在某系统方案上看到下图所示的单端反激式开关电源方案。

alala120的博客 1万+

Codex驱动AEDT完成无线充电仿真——从双线圈建模到三维电磁场动画

本文介绍了一个利用Codex、PyAEDT和Ansys Electronics Desktop 2025 R2实现双线圈无线充电系统自动建模与仿真的案例。通过简化模型(平面线圈+铁氧体磁芯),完成了从参数化建模、电磁场求解到后处理的全流程自动化,获得了耦合系数(k=0.17)、三维电磁场分布及多周期动态可视化效果。研究发现:线圈间距对传输效率影响最大(10-30mm间距时效率从40.2%降至5.57%),横向偏移15mm会使效率下降35%,而磁芯厚度增加带来的效率提升有限(3→7mm仅提高1.67%)。该框

sjjsjjsjjsjjsjj的博客 446

cuda随笔1.基数排序

闲聊 其实笔者会写下这篇文章来源与一个问题:TOPK。 在写cpu端的串行代码时,往往会用k个大小的堆来解决这类问题(时间复杂度nlog(k)),当k较大时(k >> n)一般会采用快排解决(相对内存跨度太大的堆来说会有更好的cache命中率)应该会有很多这方面的优质讲解资源,这里简单提一下,如有错误,多谢指出。 当然上面聊的只是为了勾起你的回忆(如果有的话)。写下来介绍一下并行计算中解决topk的方式。 浏览很多深度学习框架会发现topk问题在并行计算中常用基数排序来解决,当然是因为它具有良好

knswd的博客 1975

1.2 机器人控制系统软硬件平台

工业机器人的软硬件平台架构是影响工业机器人性能和效率的重要因素。良好的软硬件平台架构可以帮助工业机器人更加稳定和高效地完成工作,提高生产效率。正确的软硬件配置还可以提高工业机器人的灵活性和可靠性,使其能够更好地适应不断变化的生产环境。 同时,工业机器人的软硬件平台架构还可以影响工业机器人的安全性和维护成本。如果软硬件平台架构不合适,工业机器人可能出现故障或安全隐患,需要大量的维护和维修费用。因此,选择适当的软硬件平台架构对于确保工业机器人的高效运行和长期使用是非常重要的。

Galaxy_Robot的博客 2万+

【亲测免费】 GPU-TopK:GPU上的高效Top-K查询处理库

GPU-TopK是一个专为GPU设计的高效的Top-K运行时库。该库旨在解决一个基础问题:给定一个仅含键或键值对的数组,如何基于键的值找到排名最高的前k个元素?这个库提供了三种不同的算法实现,包括Bitonic Top-K、Radix Select Top-K和Sort Top-K。 ## 项目技术分析 1. **Bitonic Top-K**:基于位序排序的Top-K减少算法。 2. **R...

gitblog_00006的博客 1139

SFT看这一篇就够了!万字长文:监督微调(Supervised Fine-Tuning, SFT)技术全解析【从理论到实战】

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。欢迎关注,一起探索技术的无限可能!

大F子的智能小课 712

安装西门子TIA Portal V15.1提示先决条件不足如何处理?

安装TIA Portal STEP 7 Professional WinCC Professional V15.1提示先决条件不足,需要如何才能够满足安装条件呢? 1.硬件要求: 安装 STEP 7 Basic / Professional V15.1 的计算机必须至少满足以下需求: 处理器: Core i5-6440EQ 3.4 GHz 或者相当 内存: 16GB或者更多(对于大型项目,为32GB) 硬盘:SSD,配备至少50GB的存储空间 图形分辨率:最小 1920 x 1080 显示器:15.6"

Robot_PLC_HMI_Automation 2万+

排序算法-基数排序法(RadixSort)

基数排序法与我们之前讨论的排序法不太一样,并不需要进行元素之间的比较操作,而是属于一种分配模式排序方式。基数排序法比较的方向可分为最高位优先(Most Significant Digit First,MSD)和最低位优先(Least Significant Digit First,LSD)两种。MSD是从最左边的位数开始比较的,而LSD则是从最右边的位数开始比较的。

Hank_W 838

【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】

在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。

CodingCos的博客 1895

十大排序算法之基数排序(RadixSort)

一、前言 数据结构与算法,顺便刷leetcode,无意间发现了一个 我觉得讲解的比较好的网页,并且会拿leetcode里面的题目当做例题,如有需要,奉上网址:五分钟学算法 二、算法的思想 基数排序是一种非比较型排序算法,其原理是,将整数按位数切割成不同的数字,然后逐位比较。 三、算法的步骤 按照个位数进行排序:根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中。 将这些桶子中的数值重新...

Cxf2018的博客 392

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力 (论文笔记+引入代码)。LSKNet能够动态调整其大的空间接收场,以更好地模拟遥感场景中各种对象的范围上下文。据我们所知,这是首次在遥感目标检测领域探索大型和选择性核机制。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 2864

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【排序算法】基数排序(RadixSort)

基数排序:它不是比较关键字的大小,它是根据关键字中各位的值,通过对待排序的n个元素进行若干趟“分配”与“收集”来实现排序的。 设待排序的线性表中每个元素的关键字都是d位的十进制正整数。在排序的过程中需要对该线性表进行d次的分配与收集处理,每趟处理方法是相同的。在进行第j(j=1,2,...,d)次处理时,首先按元素在线性表中的排列顺序,依次将每个元素插入到编号为0~9的某个队列(关键字右起第j位

xiaoding133的专栏【Stay hungry,Stay foolish】 984

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

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

排序算法-基数排序详细讲解(RadixSort)

public static int getNumLength(int num){ if(num == 0) return 1; int count = 0; for (int i = num; i != 0; i /= 10) { count++; } return count; } public static void RadixSort(int[] array){ in

信竞星球_少儿编程题库 334

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

排序算法-基数排序(radixSort)-C

思路: 基数排序是一种非比较排序,将整数按位数拆分不同的数字,依次对ge 时间复杂度: 程序: 参考:

Do 370

基本排序算法之2——基数排序radixsort

  基数排序是基于桶式排序的变种,主要是为了通过多次遍历减少空间占用(效果相当显著)。其思路可以描述为:     1.首先待排序的序列要满足基数排序的特征,比如有“基数”的概念(整数和字符串都可以套用)     2.建立一个大小为“基数”的数组,数组每个元素是一个队列(为了节省空间应该使用链表实现)     3.根据序列的“位数”决定遍历的次数m,每次遍历相当于按某一位做桶式排序。重复的元素...

weixin_30246221的博客 121

排序算法--基数排序(RadixSort)的原理、排序过程及代码示例

基数排序(RadixSort) 概念介绍 基于比较排序算法的下界(合并排序,堆排序,快速排序…等)是Ω(nLogn),也就是说,他们不能做得比nLogn更好。 计数排序是一种线性时间排序算法,当元素在1到k的范围内时,以O(n+k)时间排序。 如果元素在1到n2的范围内呢? 这种情况不能使用计数排序,因为计数排序将花费O(n2),这比基于比较的排序算法更差。 如何在线性时间内对这样一个数组进行排序呢? 基数排序(RadixSort)能解决此问题。 基数排序的思想是从最低有效位数到最高有效位数逐个数字排序。基

penriver的博客 1463

排序算法笔记:基数排序 RadixSort in java

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33896726的博客 85

排序算法-------基数排序RadixSort

/** * 基数排序 基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。 * 然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 * 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。 * 由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数, 所以基...

学习博客--记录学习历程 419

Java排序算法(八)--基数排序(RadixSort)

基数排序:import java.util.LinkedList; publicstaticvoidradixSort (int[]data,intradix,intdigits){ //radix表示基数(进制),digits表示最大数值位数 LinkedList<LinkedList> queue= new LinkedList<LinkedList>();

gaven的博客 2287

排序算法----基数排序(RadixSort(L))单链表智能版本

转载http://blog.youkuaiyun.com/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。在每一次排序中,按照当前位把数...

weixin_30632899的博客 189

C++实现排序之基数排序

基数排序(Radix Sort)是一种非比较型的排序算法,其基本原理是将整数按位数分配,然后按每个位数进行排序。基数排序的稳定性以及时间复杂度与输入数据的分布有关。提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了基数排序使用,而基数排序算是c++中较难的排序。

Shenmmm的博客 993

python实现基本算法之基数排序(Radix Sort)

基本算法之基数排序(Radix Sort) 基本算法—06、基数排序(Radix Sort)算法 。往期请看选择排序,插入排序,归并排序,快速排序等等都发布的!欢迎大家批评指正! 文章目录基本算法之基数排序(Radix Sort)0、前言1、基数排序算法是什么?1.1基数排序有两种方法:2、算法过程图解3、代码实现4、评判算法 0、前言 评判一个算法的好坏的标准: 时间复杂度 空间复杂度 1、基数排序算法是什么? 基数排序(Radix Sort)属于“分配式排序”,又称为“桶子法” 将所有待比较

Song_Of_Sea海歌同学的博客 583
下一篇: EXP
hello556
博客等级 码龄17年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值