-
题目描述:
-
输入一个数组的值,求出各个值从小到大排序后的次序。
-
输入:
-
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
-
输出:
-
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
-
样例输入:
-
4 -3 75 12 -3
-
样例输出:
-
1 3 2 1
-
来源:
- 2009年北京航空航天大学计算机研究生机试真题
-
-
#include<iostream> #include<algorithm> #include<set> using namespace std; int a[10005],b[10005]; int chazhao(int t,int k) { int be=0,en=k-1,mid=k/2; while(be<=en) { if(t==b[mid]) { return mid+1; } else if(t>b[mid]) { be=mid+1; mid=(be+en)/2; } else if(t<b[mid]) { en=mid-1; mid=(be+en)/2; } } } int main() { int n,i,k,t; set<int> se; set<int>::iterator si; while(cin>>n) { se.clear(); for(i=0;i<n;i++) { cin>>a[i]; se.insert(a[i]); } for(k=0,si=se.begin();si!=se.end();si++) b[k++]=*si; for(i=0;i<n-1;i++) { t=chazhao(a[i],k); cout<<t<<" "; } t=chazhao(a[n-1],k); cout<<t<<endl; } return 0; }