- 数组元素的排序
真正真正的完整版
- @ 2026-10-24 18:46:02
////插入排序
//#include <bits/stdc++.h>
//using namespace std;
//int n;
//int a[10010];
//int main() {
// cin >> n;
// for (int i = 1; i <= n; i++) {
// cin >> a[i];
// }
// for (int i = 2; i <= n; i++) {
// int j = i - 1;
// int t = a[j];
// while (j >= 1 && a[j] > t) {
// a[j + 1] = a[j];
// j--;
// }
// a[j + 1] = t;
// }
// for (int i = 1; i <= n; i++) {
// cout << a[i] << " ";
// }
// return 0;
//}
////选择排序
//#include <bits/stdc++.h>
//using namespace std;
//int n;
//int a[110];
//int main() {
// cin >> n;
// for (int i = 1; i <= n; i++) {
// cin >> a[i];
// }
// for (int i = 1; i < n; i++) {
// int index = i;
// for (int j = i; j <= n; j++) {
// if (a[j] < a[index]) {
// index = j;
// }
// }
// swap(a[i], a[index]);
// }
// for (int i = 1; i <= n; i++) {
// cout << a[i] << " ";
// }
// return 0;
//}
////冒泡排序
//#include <bits/stdc++.h>
//using namespace std;
//int n;
//int a[110];
//int main() {
// cin >> n;
// for (int i = 1; i <= n; i++) {
// cin >> a[i];
// }
// for (int i = 1; i < n; i++) {
// bool f = false;
// for (int j = 1; j <= n - i; j++) {
// if (a[j] > a[j + 1]) {
// swap(a[j], a[j + 1]);
// f = true;
// }
// }
// if (!f)break;
// }
// for (int i = 1; i <= n; i++) {
// cout << a[i] << " ";
// }
// return 0;
//}
////计数排序
//#include <bits/stdc++.h>
//using namespace std;
//int n, x, ma;
//int a[100005];
//int main() {
// cin >> n;
// for (int i = 1; i <= n; i++) {
// cin >> x;
// a[x]++;
// ma = max(x, ma);
// }
// for (int i = 0; i <= ma; i++) {
// for (int j = 1; j <= a[i]; j++) {
// cout << i << " ";
// }
// }
// return 0;
//}
////桶排序
//#include <bits/stdc++.h>
//using namespace std;
//int n;
//int a[110];
//vector<int> b[10005];
//int main() {
// cin >> n;
// for (int i = 1; i <= n; i++) {
// cin >> a[i];
// int idx = a[i] / 10;
// b[idx].push_back(a[i]);
// }
// for (int i = 0; i < 10005; i++) {
// sort(b[i].begin(), b[i].end());
// for (auto x : b[i]) {
// cout << x << " ";
// }
// }
// return 0;
//}
//基数排序
#include <bits/stdc++.h>
using namespace std;
int n, ma;
int a[110];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
ma = max(ma, a[i]);
}
for (int exp = 1; ma / exp > 0; exp *= 10) {
vector<int> g[10];
for (int i = 1; i <= n; i++) {
int d = a[i] / exp % 10;
g[d].push_back(a[i]);
}
int k = 0;
for (int i = 0; i <= 9; i++) {
for (auto x : g[i]) {
a[++k] = x;
}
}
}
for (int i = 1; i <= n; i++) {
cout << a[i] << " ";
}
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 1722
- 时间
- ms
- 内存
- MiB
- 难度
- 2
- 标签
- 递交数
- 700
- 已通过
- 171
- 上传者