#include <iostream>
#include <vector>
using namespace std;
//传入一个n,返回10的n次方
int my_ten_power(int n)
{
int power=1;
for(int i=0;i<n;i++) power*=10;
return power;
}
//传入一个值num和表示位数的place(其中1表示个位,2表示十位以此类推)
//返回这个数在该位的值
int find_place_num(int num,int place)
{
return num%my_ten_power(place)/my_ten_power(place-1);
}
//传入一个向量和其中最大值位数
//将这个向量按照从小到大进行基数排序
void radix_sort(vector<int> &array,int maxplace)
{
vector<int> bucket[10];
for(int i=1;i<=maxplace;i++)
{
if(i==1)
{
while(!array.empty())
{
bucket[find_place_num(array.front(),i)].push_back(array.front());
array.erase(array.begin(),array.begin()+1);
}
}
else
{
vector<int> newbucket[10];
for(int j=0;j<10;j++)
{
while(!bucket[j].empty())
{
newbucket[find_place_num(bucket[j].front(),i)].push_back(bucket[j].front());
bucket[j].erase(bucke
基数排序的C++实现
最新推荐文章于 2024-06-27 21:51:33 发布
本文详细介绍了基数排序的原理,并提供了一种使用C++实现基数排序的代码示例,通过实例解析了如何进行数字的位数判断和桶分配,帮助读者理解这种非比较型整数排序算法。
摘要由CSDN通过智能技术生成