題目:
輸入一個整數數組,實現一個函數來調整該數組中數組的順序,使得所有的奇數位於數組的前半部分,偶數位於數組的后半部分。
解題思路:數組中維護兩個指針,第一個指針初始化時候指向數組頭部,第二個指針初始化時候指向數組尾部,第一個指針指向的數字總是偶數,第二個指針指向的數字總是奇數,如果第一個指針在第二個指針之前,則交換兩指針指向的元素。
1 package Solution; 2 3 /** 4 * 劍指offer面試題14:調整數組順序是奇數位於偶數前面 5 * 題目:輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於偶數的前半部分,所有偶數位於數組的后半部分 6 * @author GL 7 * 8 */ 9 public class No14ReorderArray { 10 11 public static void main(String[] args) { 12 int[] array={1,2,3,4,5,6,7,8,9}; 13 reorderOddEven(array); 14 for(int i=0;i<array.length;i++){ 15 System.out.print(array[i]+","); 16 } 17 18 } 19 20 public static void reorderOddEven(int[] array){ 21 if(array==null||array.length<=0) 22 throw new RuntimeException("invalid array"); 23 int begin=0; 24 int end=array.length-1; 25 while(begin<end){ 26 while(begin<end&&(array[begin]&1)!=0) 27 begin++; 28 while(begin<end&&(array[end]&1)==0) 29 end--; 30 if(begin<end){ 31 int temp=array[end]; 32 array[end]=array[begin]; 33 array[begin]=temp; 34 } 35 } 36 } 37 38 }