輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
這道題就是將數組分爲奇數部分和偶數部分,每遍歷到一個奇數,就迭代地將其放入前面奇數部分,每遍歷到一個偶數,就繼續遍歷。相當於任意奇數都小於任意偶數,所有奇數都相等,所有偶數都相等,然後使用快速排序排序數組。
public void reOrderArray(int [] array) {
if (array == null || array.length < 2) {
return;
}
int n = array.length;
for (int i = 1; i < n; i++) {
// 當前元素是奇數,就移動到奇數序列
if (array[i] % 2 != 0) {
int value = array[i];
int cur = i;
while (cur > 0 && (array[cur - 1] % 2 == 0)) {
array[cur] = array[cur - 1];
cur--;
}
array[cur] = value;
}
// 當前元素是偶數,無須移動
}
}