基数排序
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
void jishupx(vector<int> nums) {
int len = nums.size();
//cout << len << endl;
for (int i = 0; i <= 5; ++i) {
vector<vector<int>> tong(10);
for (int j = 0; j < len; ++j) {
tong[int(nums[j] / pow(10, i)) % 10].push_back(nums[j]);
}
nums.clear();
for (int j = 0; j < 10; ++j) {
if (tong[j].size() > 0) {
for (int k = 0; k < tong[j].size(); ++k) {
nums.push_back(tong[j][k]);
}
}
}
}
for (int i = 0; i < len; ++i) {
cout << nums[i] << ' ';
}
}
int main() {
int n;
cin >> n;
vector<int> nums; //如果写成nums(n),则push_back会在索引n-1后添加数据
for (int i = 0; i < n; ++i) {
int temp = 0;
cin >> temp;
nums.push_back(temp);
}
//cout << nums.size() << endl;
jishupx(nums);
}
思路参考:基数排序