描述:
将输入的一串10个整数进行从小到大排序,但是要求偶数放在偶数位置上,奇数放在奇数位置上。缺失的位置由0补齐,输入中不会有0。
题目类别: 排序
输入:输入10组随机整数
输出:按照规则排序后输出
样例输入:
53 8 21 43 3 7 51 62 13 68
53 8 21 43 6 8 51 62 14 68
样例输出:
3 8 7 62 13 68 21 0 43 0 51 0 53
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
using namespace std;
int main( void )
{
int a[10];
vector<int> even;// 偶数
vector<int> odd;// 奇数
for( int i = 0; i < 10; ++i ){
cin >> a[i];
if( a[i] % 2 == 0 )
even.push_back( a[i] );
else
odd.push_back( a[i] );
}
stable_sort( even.begin(), even.end() );
stable_sort( odd.begin(), odd.end() );
vector<int>::size_type i, j;
for( i = 0, j = 0; i < even.size() && j < odd.size(); ++i, ++j ){
cout << odd[j] << " ";
if( i == even.size() - 1 && j == odd.size() - 1 )
cout << even[i] << endl;
else
cout << even[i] << " ";
}
if( i != even.size() && j == odd.size() ){
for( ; i < even.size(); ++i ){
cout << 0 << " ";
if( i == even.size() - 1 )
cout << even[i] << endl;
else
cout << even[i] << " ";
}
}else if( i == even.size() && j != odd.size() ){
for( ; j < odd.size(); ++j ){
if( j == odd.size() - 1 ){
cout << odd[j] << endl;
break;
}else
cout << odd[j] << " ";
cout << 0 << " ";
}
}
return 0;
}