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

2021-10-03 14:59:07 字數 749 閱讀 4501

題目描述

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

題解

思路簡單的解法就是,建兩個臨時陣列,乙個奇數陣列,乙個偶數陣列,最後再組合起來即可,時間複雜度為o(n)。

一解:

public

static

void

reorderarray

(int

array)

else

}for

(int i =

0; i < lista.

size()

; i++

)for

(int i =

0; i < listb.

size()

; i++

)}

另一種思路就是在原陣列中不斷進行替換奇偶數,如何高效替換就成了乙個問題。

二解:

public

static

void

reorderarray

(int

array)

}else

}}

我用了乙個佇列用來儲存遇到的偶數字置,當遇到乙個奇數時,與隊首的偶數進行替換,但是這裡需要從替換的偶數字置開始繼續遍歷,所以時間複雜度肯定大於o(n),反而更慢了。

劍指offer 調整陣列順序

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

劍指offer(調整陣列順序)

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

劍指offer十三之調整陣列順序使奇數字於偶數前面

一 題目 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。二 思路 此題可以用類似氣泡排序的演算法來解答。遍歷陣列,當相鄰兩個數,前面的數是偶數,後面的數是奇數時,交換兩個數。...