[华为机试真题]67.奇偶数入座

简介:

题目

这里写图片描述

代码

/*---------------------------------------
*   日期: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;
}
目录
相关文章
|
8月前
|
算法
【一刷《剑指Offer》】面试题 11:数值的整数次方
【一刷《剑指Offer》】面试题 11:数值的整数次方
|
8月前
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
【剑指offer】-和为S的两个数-38/67
【剑指offer】-和为S的两个数-38/67
|
8月前
|
存储 Java
剑指Offer LeetCode 面试题15. 二进制中1的个数
剑指Offer LeetCode 面试题15. 二进制中1的个数
55 0
|
算法
【Leetcode-190.颠倒二进制位 -191.位1的个数 -202.快乐数】
【Leetcode-190.颠倒二进制位 -191.位1的个数 -202.快乐数】
53 0
|
存储 算法 Python
力扣刷题记录——190. 颠倒二进制位、191. 位1的个数、202. 快乐数
力扣刷题记录——190. 颠倒二进制位、191. 位1的个数、202. 快乐数
134 0
力扣刷题记录——190. 颠倒二进制位、191. 位1的个数、202. 快乐数
|
C++
蓝桥杯练习题十 - 煤球数目(c++)
蓝桥杯练习题十 - 煤球数目(c++)
154 0
蓝桥杯练习题十 - 煤球数目(c++)
|
Java Python
【LeetCode每日一题】剑指 Offer 16. 数值的整数次方(持续更新)
【LeetCode每日一题】剑指 Offer 16. 数值的整数次方(持续更新)
43 0
|
C++
蓝桥杯练习题十三 - 第几个幸运数(c++)
蓝桥杯练习题十三 - 第几个幸运数(c++)
214 0
|
算法
LeetCode每日一题——668. 乘法表中第k小的数
几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第k小的数字吗?
122 0