利用直接插入排序的思想,从第2个元素开始遍历,若是遇到奇数就往前插入,插入位置为前面已经排好序的序列中,最后一个奇数的后面。
public class ReOrder {
public static void main(String[] args){
int[] arr={3,4,5,6,7,8,9,10,11};
new ReOrder().reOrder(arr);
for(int a:arr){
System.out.print(a+" ");
}
}
public void reOrderArray(int [] array) {
if (array.length == 0 || array == null)
return;
for (int i = 1; i < array.length; i++) {
int temp = array[i];
if (array[i] % 2 == 1) { //如果是奇数
int j = i - 1;
for (; j >= 0 && array[j] % 2 == 0; j--) {//奇数前面的所有偶数都得后移
array[j + 1] = array[j];
}
array[j + 1] = temp;
}
}
}
public void reOrder(int[] arr) {
if (arr == null || arr.length == 0)
return;
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
if (arr[i] % 2 == 1) {//如果是奇数
for (int j = i; j > 0; j--) {
if (arr[j - 1] % 2 == 0) {//奇数前面的所有偶数交换
int t = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = t;
}
}
}
}
}
}