题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
提交答案:
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len_array = array.size();
if (len_array==0)
{
return;
}
int i = 0, j = 0;
while (array[j]%2!=0&&j<len_array) //#找第一个偶数
{
j++;
}
if (j==len_array||j==len_array-1)
{
return;
}
while (array[i] % 2 != 1 && i < len_array) //#找第一个基数
{
i++;
}
if (i == len_array)
{
return;
}
//基数在前,换
if (i>j)
{
int temp = array[i];
for (int z = i; z > j; z--)
{
array[z] = array[z - 1];
}
array[j] = temp;
j++;
}
// 。。。。。
for (int k=i+1;k<len_array;k++)
{
if (array[k]%2==1&&k>j)
{
int temp = array[k];
for (int z=k;z>j;z--)
{
array[z] = array[z - 1];
}
array[j] = temp;
j++;
}
}
cout << "end" << endl;
}
};
测试:
int main()
{
Solution *s = new Solution();
vector<int> v = { 2,4,6,1,3,5,7 };
s->reOrderArray(v);
system("pause");
return 0;
}