九度OJ 1167:数组排序 (排序)
- 题目描述:
-
输入一个数组的值,求出各个值从小到大排序后的次序。
- 输入:
-
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
- 输出:
-
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
- 样例输入:
-
4 -3 75 12 -3
- 样例输出:
-
1 3 2 1
思路:
注意输出的是次序,尤其注意重复数据的次序。
代码:
#include <stdio.h>
#define N 10000
int main(void)
{
int n, tmp, i, j, count;
int a[N], b[N];
while (scanf("%d", &n) != EOF)
{
for(i=0; i<n; i++)
{
scanf("%d", &a[i]);
b[i] = a[i];
}
for(i=0; i<n-1; i++)
{
for(j=0; j<n-1-i; j++)
{
if (b[j] > b[j+1])
{
tmp = b[j];
b[j] = b[j+1];
b[j+1] = tmp;
}
}
}
//for(i=0; i<n-1; i++)
// printf("%d ", b[i]);
//printf("%d\n", b[i]);
for(i=0; i<n; i++)
{
count = 0;
for(j=0; j<n; j++)
{
if (a[i] == b[j])
{
count ++;
if (i != 0)
printf(" ");
printf("%d", count);
break;
}
else if (j == 0)
count ++;
else if (b[j] != b[j-1])
count ++;
}
}
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1167
User: liangrx06
Language: C
Result: Accepted
Time:350 ms
Memory:920 kb
****************************************************************/
编程算法爱好者。
浙公网安备 33010602011771号