基数排序

简介:

基数排序属于分配式排序,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用

基本思路:

将数字按位数分割成不同的数字,然后按大小进行桶排序

(从低位开始向高位排序,一直到最大位数,)

步骤图:

(图片来源:https://www.runoob.com/w3cnote/radix-sort.html)

代码:

int GetM(int data[], int n)					
{
	int Maxdata = data[0];
	for (int i = 1; i < n; i++)
	{
		if (data[i] > Maxdata)
		{
			Maxdata = data[i];
		}
	}
	int M = 1;
	while (Maxdata >= 10)
	{
		Maxdata /= 10;
		M++;
	}
	return M;
}

void RadixSort(int data[], int n)
{
	int m = GetM(data, n);					//获取最高位的位数,即排序的次数
	int *temp = new int[n];					//临时存储数据的值
	int Count[10];							//计数
	int Radix = 1,k;
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < 10; j++)		//先清0
		{
			Count[j] = 0;
		}
		for (int j = 0; j < 10; j++)		//记录个/十/百位出现的次数
		{
			k = (data[j] / Radix) % 10;
			Count[k]++;
		}
		for (int j = 1; j < 10; j++)		//记录对应的位置
		{
			Count[j] = Count[j - 1] + Count[j];
		}
		for (int j = 0; j < n; j++)			//将Count中记录的位置分配到temp中
		{
			k = (data[j] / Radix) % 10;
			temp[Count[k] - 1] = data[j];
			Count[k]--;
		}
		for (int j = 0; j < n; j++)			//将temp中的数据复制给数组中
		{
			data[n-1-j] = temp[j];
		}
		Radix *= 10;
	}
	delete[]temp;
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值