十大经典排序之基数排序(C++实现)
2021-06-03 14:02
阅读:533
标签:data 基数排序 aik eof sort href tmp 处理 ++i
基数排序
也是采用分桶的思想,但是加入了按位比较的思想(可以理解为每位进行一次计数排序)
思路:
- 计算数列中最大位数
- 按位数循环处理每位的排序
代码实现:
#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
上一篇:C 数组下标计算
下一篇:记录一次偶然的JAVA学习
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:十大经典排序之基数排序(C++实现)
文章链接:http://soscw.com/index.php/essay/90054.html
文章标题:十大经典排序之基数排序(C++实现)
文章链接:http://soscw.com/index.php/essay/90054.html
评论
亲,登录后才可以留言!