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

2021-09-10 17:18:53 字數 679 閱讀 5955

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

指定兩個指標pbegin和pend,在pbegin=pend時),也就滿足了整個陣列都是奇在偶數前。

public class solution21 

while (pbegin < pend && funcpend(array[pend]))

if (pbegin###2.1 暴力解

從頭開始遍歷陣列,遇到偶就將陣列後面的數字全部往前移乙個,再將偶數排在最後,此種方法複雜讀為o(n^2)。

###2.2 improved

要想保證原有次序,則只能順次移動或相鄰交換。

i從左向右遍歷,找到第乙個偶數。

j從i+1開始向後找,直到找到第乙個奇數。

將[i,…,j-1]的元素整體後移一位,最後將找到的奇數放入i位置,然後i++。

終止條件:j向後遍歷查詢失敗。

public void reorderarray(int array)

int pend = pbegin + 1;

while (pend < array.length && funcpend(array[pend]))

if (pend=pbegin ; pend2--)

array[pbegin] = temp;

}else

}}

劍指Offer 21 調整陣列順序使奇數在偶數前

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分 示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案 在陣列左右定義兩個索引,左邊找出偶數,右邊找出奇數,找到後交換並讓左索引右移,右索引左移...

劍指offer 調整陣列順序

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

劍指offer(調整陣列順序)

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