个人博客:double.win
时间限制: 1 s
空间限制: 1000 KB
题目等级 : 青铜 Bronze
题目描述 Description
实现从小到大排序。
输入描述 Input Description
第一行一个整数n
第二行:n个整数,每个用空隔隔开。
输出描述 Output Description
从小到大依次数据,每行一个,共n行。
样例输入 Sample Input
6
1
2
5
4
3
2
样例输出 Sample Output
1
2
2
3
4
5
1 #include <iostream>
2 using namespace std;
3 const int MAXN = 100000;
4 const int k = 1000; // range
5 int a[MAXN], c[MAXN], ranked[MAXN];
6
7 int main() {
8 int n;
9 cin >> n;
10 for (int i = 0; i < n; ++i) {
11 cin >> a[i];
12 ++c[a[i]];
13 }
14 for (int i = 1; i < k; ++i)
15 c[i] += c[i-1];
16 for (int i = n-1; i >= 0; --i)
17 ranked[--c[a[i]]] = a[i];//如果是i表达的是原数标号,a[i]就是排序后的正确序列
18 for (int i = 0; i < n; ++i)
19 cout << ranked[i] << endl;
20 return 0;
21 }