劍指Offer 調整陣列順序使奇數字於偶數前面

2021-09-14 01:54:31 字數 1203 閱讀 7175

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

思路一:

首先統計奇數的個數,然後拷貝乙個陣列,設定兩個指標,奇數指標從0開始,偶數指標從奇數個數的末尾開始遍歷,填充到原陣列

時間複雜度\(o(n)\) 空間複雜度\(o(n)\)

思路二:

由於要保證穩定即證奇數和奇數,偶數和偶數之間的相對位置不變,使用插入排序思想

時間複雜度\(o(n^2)\) 空間複雜度\(o(1)\)

package array;

/** * 調整陣列順序使奇數字於偶數前面

* 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

*/public class solution48 ;

solution48.reorderarray_2(array);

for (int i :

array)

}/**

* 由於要保證穩定即證奇數和奇數,偶數和偶數之間的相對位置不變,使用插入排序思想

* 複雜度:o(n2) + o(1)

** @param array

*/public void reorderarray_2(int array)

if (nextoddidx == n)

int nextoddval = array[nextoddidx];

for (int j = nextoddidx; j > i; j--)

array[i] = nextoddval;}}

}/**

* 新建乙個陣列

* 複雜度:o(n) + o(n)

** @param array

*/public void reorderarray(int array)

}int copy = array.clone();

int i = 0, j = oddcnt;

for (int num : copy) else }}

}

posted @

2018-04-11 13:21

武培軒 閱讀(

...)

編輯收藏

劍指offer 調整陣列順序

時間限制 1秒 空間限制 32768k 本題知識點 陣列 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。首先想到的是利用兩個輔助陣列,乙個儲存奇數,乙個儲存偶數,這樣的...

劍指offer(調整陣列順序)

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。1 暴力解法 從前到位掃瞄陣列,如果出現前面是偶數後面是奇數的情況,則交換。其中使用氣泡排序的思想。從後面朝前比較,使用外迴圈控制趟...

劍指offer(十三) 調整陣列順序

題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。題解 思路簡單的解法就是,建兩個臨時陣列,乙個奇數陣列,乙個偶數陣列,最後再組合起來即可,時間複雜度為o n 一解 pub...