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;
}

注意空格的输出。

comments powered by Disqus