• 面试题21_2:调整数组顺序使奇数位于偶数之前(各数之间的相对位置不变)


    数组问题。输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。并且保证奇数与奇数、偶数与偶数之间的相对位置不变。

    C++版本

    #include <iostream>
    #include <vector>
    #include <stack>
    #include <cstring>
    #include <queue>
    #include <algorithm>
    #include "TreeNode.h"
    using namespace std;
    
    void reOrderArray(vector<int> &array){
        int len = array.size();
        if(len <= 1)
            return ;
        for(int i = 0; i < len; i++){
            int j = i + 1;
            // a[i]为偶数,j前进,直到替换
            if(array[i]%2 == 0){
                // j为偶数,前进
                while(array[j]%2 == 0){
                    // i为偶数,j也为偶数,一直后移到了末尾,证明后面都是偶数
                    if(j == len-1)
                        return;
                    j++;
                }
                // 此时j为奇数
                int count = j-i;
                int temp = array[i];
                array[i] = array[j];
                while(count>1){
                    array[i + count] = array[i + count - 1];//数组后移
                    count--;
                }
                array[i+1] = temp;
            }
        }
    }
    
    
    int main()
    {
        vector<int> array;
        array.push_back(1);
        array.push_back(2);
        array.push_back(3);
        array.push_back(4);
        array.push_back(5);
        array.push_back(6);
        array.push_back(7);
        reOrderArray(array);
        for(int i = 0; i < array.size(); i++){
            cout<<array[i]<<" ";
        }
        return 0;
    }
    
  • 相关阅读:
    2019春季总结
    求最大值及其下标
    课程设计第四次作业
    课程设计第三次作业
    课程设计第一次作业
    课程设计第二次作业
    第十二周作业
    第十一周作业
    第十周作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13392652.html
Copyright © 2020-2023  润新知