您的位置:首页 > 其它

九度OJ 1167:数组排序 (排序)

2015-10-26 09:47 281 查看
时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:5395

解决:1715

题目描述:

输入一个数组的值,求出各个值从小到大排序后的次序。

输入:

输入有多组数据。

每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。

输出:

各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。

样例输入:
4
-3 75 12 -3


样例输出:
1 3 2 1


来源:2009年北京航空航天大学计算机研究生机试真题

思路:

注意输出的是次序,尤其注意重复数据的次序。

代码:

#include <stdio.h>

#define N 10000

int main(void)
{
int n, tmp, i, j, count;
int a
, b
;

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
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: