13.輸入一個整數數組,實現一個函數來調整該數組中數字的順序。
使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。
利用兩個指針start,end,start從前向後遍歷數組,end從後向前遍歷數組。start查找偶數,end查找奇數,然後交換順序知道兩指針相遇。
public class javatest {
public static void reorderOddEven(int[] arr) {
// 對於輸入的數組爲空,或者長度小於2的只接返回
if (arr == null || arr.length < 2) {
return;
}
// 從前向後記錄偶數的位置
int start = 0;
// 從後向前記錄奇數的位置
int end = arr.length - 1;
// 開始調整奇數和偶數的位置
while (start < end) {
// 找偶數
while (start < end && arr[start] % 2 != 0) {
start++;
}
// 找奇數
while (start < end && arr[end] % 2 == 0) {
end--;
}
// 找到後就將奇數和偶數交換位置
// 對於start=end的情況,交換不會產生什麼影響
// 所以將if判斷省去了
int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
}
public static void printArray(int[] arr) {
if (arr != null && arr.length > 0) {
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
}
public static void main(String[] args) {
int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
reorderOddEven(array);
printArray(array);
}
}