調整陣列順序使奇數位於偶數前面(Java實現)
阿新 • • 發佈:2019-01-29
該題為劍指offer——面試題14
解法一沒有保證數字的相對位置
package cn.itcast.day422; /** * @author Jacob 劍指offer——面試題14:調整陣列順序使奇數位位於偶數位前面 * * */ public class Demo2 { public static void main(String[] args) { int[] arr={1,2,3,4,5,6,7}; // int[] arr={1,3,5,7,9,11}; // int[] arr={2,4,6,8,10,12}; solve_order(arr); } //該方法無序:不能保證個數字的相對位置 public static void solve_unorder(int[] arr) { int length = arr.length; int i = -1, j = length; while (true) { while (arr[++i] % 2 != 0 ) if(i>=length-1) break; while (arr[--j] % 2 == 0 ) if(j<=0) break; if(i<j){ exch(arr,i,j); }else{ break; } } printArr(arr); } //該方法能保證數字間相對位置 public static void solve_order(int[] array) { int length = array.length; //統計陣列中奇數個數 int begin=0; int oddNum=0; for(int i=0;i<length;i++){ if((array[i]&1)==1){ oddNum++; } } int[] newArr=new int[length]; for(int i=0;i<length;i++){ //奇數 if((array[i]&1)==1){ newArr[begin++]=array[i]; } //偶數 else{ newArr[oddNum++]=array[i]; } } for(int i=0;i<length;i++){ array[i]=newArr[i]; } printArr(array); } private static void exch(int[] arr, int i, int j) { int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } //列印陣列 private static void printArr(int[] arr) { for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } }