题目1167:数组排序

来源:互联网 发布:c语言结构体 编辑:程序博客网 时间:2024/05/02 04:50
题目1167:数组排序

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:6992

解决:2242

题目描述:

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

输入:

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

输出:

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

样例输入:
4-3 75 12 -3
样例输出:
1 3 2 1
来源:
2009年北京航空航天大学计算机研究生机试真题
答疑:
解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7890-1-1.html
#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>using namespace std;struct E{int x,y,z;}list[10011];bool cmp(E A,E B){return A.x<B.x;}bool cmp1(E A,E B){return A.y<B.y;}int main(){int n;while(scanf("%d",&n)!=EOF){memset(list,0,sizeof(list));for(int i=1;i<=n;i++){scanf("%d",&list[i].x);list[i].y=i;}sort(list+1,list+n+1,cmp);int num=0;for(int i=1;i<=n;i++){if(i>1&&list[i].x==list[i-1].x)num++;list[i].z=i-num;}sort(list+1,list+1+n,cmp1);for(int i=1;i<=n;i++){printf("%d",list[i].z);if(i!=n)printf(" ");}printf("\n");}//system("pause");return 0;}
0 0
原创粉丝点击