剑指Offer刷题
六、调整数组顺序使奇数位于偶数前面
在做这道题的时候,走了点弯路,本来我想创建两个StringBuffer对象,然后将数组中的元素分奇偶添加到对应的StringBuffer对象中,然后再转换成String,再转换成两个字符数组,最后再把字符数组中的元素按奇偶添加到数组中,结果不对。于是乎,我又把两个StringBuffer对象合并成一个StringBuffer对象,再此操作,还是不行。突然,我想到整数不只是1位数,而且char[]是字符,所以这样不对。
(1)题目如下:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
(2)分析:
考虑到数组长度不可变,我采用的是集合(长度可变化),ArrayList,创建两个对象,一个用来存放奇数,一个用来存放偶数。
而且ArrayList还可以把一个对象完全添加,这样就可以再奇数集合后边直接添加偶数集合。最后遍历集合赋值给数组。
(3)代码如下: