基于“小桂子”代码的C++版本
2025-08-10 18:06:41
发布于:浙江
1阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
void radixSortAndPrint(vector<int>& nums) {
if (nums.empty()) return;
// 找到最大值确定位数
int max_num = *max_element(nums.begin(), nums.end());
int num_digits = to_string(max_num).size();
for (int digit = 0; digit < num_digits; ++digit) {
// 创建0-9的桶
vector<vector<int>> count(10);
// 按当前位数值分配到桶
for (int num : nums) {
int divisor = pow(10, digit); // 10^digit
int current_digit = (num / divisor) % 10;
count[current_digit].push_back(num);
}
// 合并桶并更新数组
nums.clear();
for (auto& bucket : count) {
nums.insert(nums.end(), bucket.begin(), bucket.end());
}
// 打印当前轮排序结果
for (size_t i = 0; i < nums.size(); ++i) {
if (i > 0) cout << " ";
cout << nums[i];
}
cout << endl;
}
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; ++i) {
cin >> nums[i];
}
radixSortAndPrint(nums);
return 0;
}
这里空空如也
有帮助,赞一个