uva11462 Age Sort ——计数排序
May 21, 2013
Uva
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2457 题目大意: 给很多个范围在1到100之内的数字,数量最多有2*10^6个,排序输出。 题目思路: 数组很大,超内存。不能快排。所以采用计数排序
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
int a[120];
void solve() {
int n, tmp, i, j;
while (~scanf("%d", &n)) {
if (!n) break;
memset(a, 0, sizeof(a));
for (i = 0; i < n; ++i) {
scanf("%d", &tmp);
a[tmp]++;
}
bool mrk = true;
for (i = 1; i <= 100; ++i) {
for (j = 0; j < a[i]; ++j) {
if (!mrk) printf(" ");
printf("%d", i);
mrk = false;
}
}
printf("\n");
}
}
int main(void) {
//freopen("11462.in", "r", stdin);
solve();
return 0;
}
注意空格的输出。