troubleasy

导航

 

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

思路:改编快排,为保证奇偶相对位置不变,每当发现奇数且偶数在前时,保存奇数值,将偶数到奇数之前的元素顺序后移。

    void reOrderArray(vector<int> &array) {
        int j=0;
        for(int i=0;i<array.size();i++)
        {
            //i表示奇数位置,j表示偶数位置
            if((array[i]%2)!=0)
            {
                if(i>j)
                {
                    int k=i;
                    int temp=array[i];
                    while(k>j)
                    {
                        array[k]=array[k-1];
                        k--;
                    }
                    array[k]=temp;
                    //j++;
                }
                j++;
            }
        }
    }

 

posted on 2020-05-26 01:32  troubleasy  阅读(103)  评论(0编辑  收藏  举报