剑指Offer第六题:调整数组顺序使奇数位于偶数前面
问题描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
问题分析
需要将数组的奇数放在前面,偶数放在后面,并且保证相对位置不变,那我我们只需要先把奇数用一个数组存起来,偶数再用一个数组存起来,在遍历完数组后再重新写入原来的数组,那么他们的相对顺序不变。
算法分析
- 需要两个数组来分别存储奇偶数据
源代码
1 public class Solution { 2 public static void reOrderArray(int [] array) { 3 int len=array.length; 4 int []ary1=new int[len]; 5 int []ary2=new int[len]; 6 int num1=0; 7 int num2=0; 8 for(int i=0;i<len;i++) { 9 if(array[i]%2==0) { 10 ary2[num2]=array[i]; 11 num2++; 12 }else { 13 ary1[num1]=array[i]; 14 num1++; 15 } 16 } 17 for(int i=0;i<num1;i++) { 18 array[i]=ary1[i]; 19 } 20 for(int j=0;j<num2;j++) { 21 array[num1+j]=ary2[j]; 22 } 23 } 24 }