您的位置:首页 > 其它

九度oj-1167-数组排序

2015-11-15 22:21 218 查看
时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:5400

解决:1718

题目描述:

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

输入:

输入有多组数据。

每组输入的第一个数为数组的长度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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  九度 set 二分法