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

2021-08-01 11:12:38 字數 884 閱讀 1555

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

思路:要保持相對位置不變

思路一:從前往後遍歷,遇到偶數就把這個偶數後邊的數全部前移,然後把這個偶數插入到最後。這樣複雜度是o(n^2)。

思路二:從前往後遍歷,設定兩個游標i、j;i尋找偶數,j尋找i+1後邊的奇數;知道都找到後,將i……j-1的資料前移,這樣把j的位置空出來了,把找到的偶數a【i】插入到j位置。

其實,剛開始有點這樣的思路,不過感覺因為複雜度高就沒有接著思考,然後也沒思考出來。看了別人的**才做出來。盡量下次再多思考思考

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

* 第一思路,遍歷陣列,把在前邊的偶數取出來,陣列往前移動1位,把取出來的偶數放到後邊空出來的以為上。o(n2)

* @author lenovo

* 第二思路,前邊的偶數和後邊的奇數交換,這個複雜度只有o(n)

* * 調整陣列順序使奇數字於偶數前面,且原有順序不變

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

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

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

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

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

(第一種思路可以保證原有順序不變,但是平均複雜度比這個思路高)

*/public class main

public void reorderarray(int array)

array[i]=temp;

}else

}for(int t=0;t

調整陣列順序使奇數字於偶數前面(java)

一 問題描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。二 演算法分析 給定乙個陣列array 目標 調整陣列中元素順序,使得奇數在前,偶數在後,同時奇數區和偶數區元素相...

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

題目 輸入乙個整數陣列,調整陣列中數字的順序,使得所有奇數字於陣列的前面部分,偶數字於陣列的後面部分。思路 要求時間複雜度是 n 1 從頭開始掃瞄陣列,確定數是奇數不動,偶數的話就移動陣列最後。這樣每個偶數都要進行移動,最壞的時間複雜度達到 n 2 2 用兩個指標,頭指標指向陣列開始,尾指標指向陣列...

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

1 題目 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。2 解題思路 2.1 最簡單思路,時間複雜度o n2 從頭掃瞄這個陣列,每碰到乙個偶數時,拿出這個數字,並把位於這個數字後面的所有數字往前挪動一位。挪完之後在陣列的末尾有乙個...