面試題14:調整數組順序使奇數位於偶數前面

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

思路:維護兩個指針,第一個指針初始指向數組第一個數字,只向後移動;第二個之後初始指向最後一個數字,只向前移動。在兩個指針相遇前,第一個指針向後移動找到偶數,第二個指針向前移動找到奇數,兩者交換,繼續移動。

java實現:

public static void reOrderArray(int[] array) {
		if(array.length<=0) return;
		int i=0;
		int j=array.length-1;
		while(i<j) {
			while(i<j&&(array[i]%2!=0)) {
				i++;
			}
			while(i<j&&(array[j]%2==0)) {
				j--;
			}
			if(i<j) {
				int temp=array[i];
				array[i]=array[j];
				array[j]=temp;
			}
		}
	}
	
//把判斷奇偶條件解耦
	public static void reOrderArray2(int[] array) {
		if(array.length<=0) return;
		int i=0;
		int j=array.length-1;
		while(i<j) {
			while(i<j&&(!func(array[i]))) {
				i++;
			}
			while(i<j&&(func(array[j])) ){
				j--;
			}
			if(i<j) {
				int temp=array[i];
				array[i]=array[j];
				array[j]=temp;
			}
		}
	}
	
	public static boolean func(int num) {
		
		return (num & 1)==0;
	}

發佈了34 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章