劍指offer之調整陣列順序使奇數位於偶數前面
阿新 • • 發佈:2019-01-25
題目描述:輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
思路:類似選擇排序,遍歷每個元素,遇到奇數,就從這個奇數開始向前遍歷,使其前面的偶數向後覆蓋,在遍歷過程中直到遇上奇數或者到達第一個元素,結束遍歷,最後將奇數放入正確位置
程式碼:
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; } } } }