刷題筆記:13.調整數組順序使奇數位於偶數前面

在這裏插入圖片描述

package offer;

import java.util.ArrayList;

/**
 * @author Liuyang
 * 
 */

public class T13_reOrderArray {
	//調整數組順序使奇數位於偶數前面
	//直接插入排序法
	public void reOrderArray_myself(int [] array) {
		int temp = 0;
		int flag = 0;
		for(int i=0;i<array.length;i++){
			if(array[i]%2==1){
				for(int j=i;j>flag;j--){
					temp = array[j];
					array[j] = array[j-1];
					array[j-1] = temp;
				}
				flag++;
			}
		}
	}
	//克隆一個數組給老數組賦值
	public void reOrderArray(int[] array) {
	    int oddNum = 0;
	    for(int value: array) {
	    	if(value % 2 == 1) {
	    		oddNum++;
	    	}
	    }
	    
	    int[] copyArray = array.clone();//克隆數組,對原數組賦值
	    int i = 0, j = oddNum;//j爲偶數開始存儲的位置
	    
	    for(int num : copyArray) {
	        if(num % 2 == 1) {
	        	array[i] = num;
	        	i ++;
	        } else {
	        	array[j++] = num;
	        	j ++;
	        }
	    }
	}
	//用兩個list實現
	public void reOrderArray_1(int[] array) {
        ArrayList<Integer> odd = new ArrayList<>();
        ArrayList<Integer> even = new ArrayList<>();
        
        for(int i = 0; i < array.length; i ++) {
        	if(array[i] % 2 == 0) {
        		even.add(array[i]);
        	} else {
        		odd.add(array[i]);
        	}
        }
        odd.addAll(even);

        for(int i = 0; i < array.length; i ++) {
        	array[i] = odd.get(i);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章