奇数排序
时间限制(普通/Java) : 2000 MS/ 6000 MS 运行内存限制 : 65536 KByte
总提交 : 1361 测试通过 : 355
总提交 : 1361 测试通过 : 355
比赛描述
给定n个正整数,对其中的奇数按递增次序排序。
输入
第一行是一个正整数:测试用例数目,最多为5。之后,每个测试用例包括两行:
l 第1行给出整数数目n,1≤n≤100000,每个整数范围为 [0,100000)
l 第2行给出n个整数
输出
对于每个测试用例:
l 输出“Case #:”,#表示序号
l 输出奇数排序后的n个整数
注意:输出部分的结尾要求包含一个多余的空行。
样例输入
2
3
4 2 1
3
3 2 1
样例输出
Case 1:
4 2 1
Case 2:
1 2 3
题目来源
算法与数据结构设计2009
#include<iostream>
#include<algorithm>
using namespace std;
long a[100000],b[100000],pos[100000];
int main(){
int N,CaseNo=0;
long n,i,j;
cin>>N;
while(N--){
cin>>n;
for(i=0,j=0;i<n;++i){
cin>>a[i];
if(a[i]&1){
b[j] = a[i];
pos[j] = i;
++j;
}
}
sort(b,b+j);
for(i=0;i<j;++i){
a[pos[i]] = b[i];
}
cout<<"Case "<<++CaseNo<<":"<<endl;
cout<<a[0];
for(i=1;i<n;++i){
cout<<" "<<a[i];
}
cout<<endl;
}
}