[华为机试真题]67.奇偶数入座
程序员文章站
2024-02-28 16:14:22
...
题目
代码
/*---------------------------------------
* 日期:2015-07-07
* 作者:SJF0115
* 题目:奇偶数入座
* 来源:华为机试真题
-----------------------------------------*/
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
vector<int> OddEvenSort(vector<int> num){
int i,j,k;
int size = num.size();
vector<int> result;
if(size == 0){
return result;
}//if
vector<int> odd;
vector<int> even;
// 奇偶分离
for(i = 0;i < size;++i){
// 奇数
if(num[i] % 2){
odd.push_back(num[i]);
}//if
// 偶数
else{
even.push_back(num[i]);
}//else
}//for
// 排序
sort(odd.begin(),odd.end());
sort(even.begin(),even.end());
// 整合
int oddSize = odd.size();
int evenSize = even.size();
int number = 0;
for(i = 0,j = 0,k = 1;i < oddSize || j < evenSize;++k){
// 奇数
if(k % 2){
number = i < oddSize ? odd[i] : 0;
++i;
}//if
// 偶数
else{
number = j < evenSize ? even[j] : 0;
++j;
}//else
result.push_back(number);
}//while
return result;
}
int main(){
int n = 10;
freopen("C:\\Users\\Administrator\\Desktop\\acm.txt","r",stdin);
vector<int> vec;
int num,i;
// 输入
for(i = 0;i < n;++i){
cin>>num;
vec.push_back(num);
}//for
// 排序
vector<int> result = OddEvenSort(vec);
// 输出
int size = result.size();
for(i = 0;i < size;++i){
if(i == size-1){
cout<<result[i]<<endl;
}//if
else{
cout<<result[i]<<" ";
}//else
}//for
return 0;
}