调整数组顺序使奇数位于偶数前面
Posted hellosnow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整数组顺序使奇数位于偶数前面相关的知识,希望对你有一定的参考价值。
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
这道题如果没有相对位置的要求的话,可以让两个指针i和j分别指向头和尾,指针i从前往后走,当指针i指向偶数时,停下来;指针j从前往后走,当指针j指向奇数时,停下来,然后交换两个指针所指向的数,这样就可以把偶数换到后面,奇数换到前面。当i不再小于j时,整个过程停止。但是这个方法会使数字的相对位置改变。
c++代码如下:
1 class Solution { 2 public: 3 void reOrderArray(vector<int> &array) { 4 int i = 0, j = array.size() - 1; 5 while(i < j){ 6 while(array[i] % 2 == 1) i++; 7 while(array[j] % 2 == 0) j--; 8 swap(array[i], array[j]); 9 } 10 } 11 };
如果不改变相对位置,可以用一个数组来存放数字,先存所有的奇数,再存所有的偶数。
c++代码如下:
class Solution { public: void reOrderArray(vector<int> &array) { vector<int> res; for(auto x : array){ if(x % 2 == 1) res.push_back(x); } for(auto x : array){ if(x % 2 == 0) res.push_back(x); } array = res; } };
以上是关于调整数组顺序使奇数位于偶数前面的主要内容,如果未能解决你的问题,请参考以下文章