////插入排序
//#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
上传者