九度oj-1167-数组排序
2015-11-15 22:21
218 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5400
解决:1718
题目描述:
输入一个数组的值,求出各个值从小到大排序后的次序。
输入:
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
输出:
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
样例输入:
样例输出:
来源:2009年北京航空航天大学计算机研究生机试真题
内存限制: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; }
相关文章推荐
- 九度1526
- 九度1025:最大报销额 java
- 九度 题目1026:又一版 A+B java
- 【九度】题目1006:ZOJ问题
- 【九度】题目1005:Graduate Admission
- 【九度】题目1004:Median
- 【九度】题目1003:A+B
- 【九度】题目1002:Grading
- 【九度】题目1001:A+B for Matrices
- 【九度】题目1000:计算a+b
- 三、Hash练习_1156_1
- 三、Hash_1081_1
- 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
- 并查集
- JOBDU Q1001
- JOBDU Q1002
- JOBDU Q1003
- JOBDU Q1004
- 九度题目1431解
- 九度--第1001题:A+B for Matrices