奇数偶数重组

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

#include 
#include 
using namespace std;
void reOrderArray(vector<int> &array)
{
    int temp,lastOddIndex;
    int len = array.size();
    for(int i = 0; i < len; i++)
    {
        if(array[i]&0x1)
        {
            temp = array[i];
            for(int j = i; j > 0; j--)
            {
                array[j] = array[j-1];
            }
            array[0] = temp;
            lastOddIndex = i;
            break;
        }
    }

    for (int i = lastOddIndex + 1, lastOddIndex= 0; i < len; i++)
    {
        if (array[i] & 1)
        {
            temp = array[i];
            for (int j = i; j > lastOddIndex + 1; j--)   //依次向前移动
            {
                array[j] = array[j - 1];
            }
            array[++lastOddIndex] = temp;
        } 
    }
}

int main()
{
    int test[] = {1,2,3,4,5,6,7,8};
    vector<int> testarray(test,test+8);
    reOrderArray(testarray);
}

你可能感兴趣的:(PAT)