十大经典排序之基数排序(C++实现)

2021-06-03 14:02

阅读:456

标签:data   基数排序   aik   eof   sort   href   tmp   处理   ++i   

基数排序

也是采用分桶的思想,但是加入了按位比较的思想(可以理解为每位进行一次计数排序)

思路:

  1. 计算数列中最大位数
  2. 按位数循环处理每位的排序

代码实现:

#include
#include
#include
using namespace std;

int maxbit(int data[], int n) //辅助函数,求数据的最大位数
{
	int d = 1; //保存最大的位数
	int p = 10;
	for (int i = 0; i = p)
		{
			p *= 10;
			++d;
		}
	}
	return d;
}
void RadixSort(int data[], int n) //基数排序
{
	int d = maxbit(data, n);
	vector tmp(n);
	vector count(n);//计数器

	int i, j, k;
	int radix = 1;
	for (i = 1; i = 0; j--) //将所有桶中记录依次收集到tmp中
		{
			k = (data[j] / radix) % 10;
			tmp[count[k] - 1] = data[j];
			count[k]--;
		}
		for (j = 0; j 

参考资料:https://baike.baidu.com/item/基数排序

十大经典排序之基数排序(C++实现)

标签:data   基数排序   aik   eof   sort   href   tmp   处理   ++i   

原文地址:https://www.cnblogs.com/ming-fei/p/14673964.html


评论


亲,登录后才可以留言!