剑指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 }

 

posted @ 2018-09-03 16:20  轻抚丶两袖风尘  阅读(88)  评论(0)    收藏  举报