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

2021-07-15 21:22:33 字數 666 閱讀 7714

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

暴力法:

類似於氣泡排序,對相鄰的兩個數進行判斷,如果前乙個為偶數,後乙個為奇數,則交換兩者位置,所以需要兩層迴圈,時間複雜度o(n2)

**實現:

public

class solution }}

}}

但劍指offer上的題目與這個要求有一點區別,沒有對相對位置的規定。所以可以這樣實現。

可以採用雙指標的方法,讓第乙個指標指向偶數,第二個指標指向奇數,並且第乙個指標在第二個指標的前面,就交換兩個元素。這樣,當第乙個指標在第二個指標的後面的時候,就說明所有的奇數都移動到所有偶數的前面了。這時候的迴圈就可以結束了。

public

void reorderarray(int array)

while(evenindex < oddindex && (array[oddindex] & 0x1) == 0)

//如果指向偶數的指標仍再指向奇數指標的前面,則交換兩個數的值

if(evenindex < oddindex)

}}

劍指offer 調整陣列順序

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

劍指offer(調整陣列順序)

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

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

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