剑指offer:调整数组顺序使奇数位于偶数前面

题目描述:

调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,
所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路:
1、重新开辟一个数组,先将奇数存入,然后将剩余的偶数填入
2、插入排序,保证相对位置不变

 1 public class Tiaozhengshunxu {
 2     public static void reOrderArray(int [] array) {
 3 //        int len = array.length;
 4 //        int[] array1 = new int[len];
 5 //        int[] array2 = new int[len];
 6 //        int j = 0,k=0;
 7 //        for(int i = 0;i<len;i++){
 8 //            if(array[i]%2==0){
 9 //                array2[j]=array[i];
10 //                j++;
11 //            }else {
12 //                array1[k]=array[i];
13 //                k++;
14 //            }
15 //        }
16 //        System.arraycopy(array1, 0, array, 0, k);
17 //        System.arraycopy(array2, 0, array, k, j);
18 ////        for(int i = 0 ;i<array.length;i++){
19 ////            System.out.println(array[i]);
20 ////        }
21         int len = array.length;
22         int[] res = array.clone();
23         int j = 0;
24         for(int i = 0; i < len;i++){
25             if(array[i]%2==1){
26                 res[j]=array[i];
27                 //System.out.println(res[j]);
28                 j++;               
29             }    
30         }
31         for(int i = 0; i < len;i++){
32             if(array[i]%2==0){
33                 res[j]=array[i];
34                 //System.out.println(res[j]);
35                 j++;
36                 
37             }    
38         }
39     
40         array = res;
41         for(int i = 0 ;i<array.length;i++){
42         System.out.println(array[i]);
43     }
44     }
45     public static void main(String[] args) {
46         // TODO Auto-generated method stub
47         int[] array = {1,2,3,4,5,6,7};
48         reOrderArray(array);
49     }
50 
51 }
原文地址:https://www.cnblogs.com/zlz099/p/8572435.html