1. 程式人生 > >劍指offer之調整陣列順序使奇數位於偶數前面

劍指offer之調整陣列順序使奇數位於偶數前面

題目描述:輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

思路:類似選擇排序,遍歷每個元素,遇到奇數,就從這個奇數開始向前遍歷,使其前面的偶數向後覆蓋,在遍歷過程中直到遇上奇數或者到達第一個元素,結束遍歷,最後將奇數放入正確位置

程式碼:

public class Main {
	 public static void main(String[] args) {
		 int arr[] = {3,1,5,7,2,4,9,6,10,8,11,11,13,14,15,12};
		 sort(arr);
		 for(int n:arr){
			 System.out.print(n+" ");
		 }
	    }
	 
	 public static void sort(int[] arr){
		 for(int i=0;i<arr.length;i++){
			 int temp=arr[i];
			 if(arr[i]%2==1){
				 int j=i-1;
				 while(j>=0&&arr[j]%2==0){
					 arr[j+1]=arr[j];
					 j--;
				 }
				 arr[j+1]=temp;
			 }
		 }
	 }
}