如題,考慮一種時間複雜度為o(n),空間複雜度為o(1)的演算法,那就是維護兩個指標,分別指向陣列的首尾,然後分別判斷所指向的元素是奇數還是偶數,符合條件指標分別向中間「靠攏」,不符合條件停止,然後交換這兩個元素,使之符合題目條件。
參考**如下
void orderthearraytooddandeven(int array, int length)
}}
此題還有擴充套件問題
問題一:比如,乙個陣列,調整負數在前,正數在後,那麼就需要調整判斷的條件。
問題二:調整陣列元素的同時,使得元素的相對位置不變,要求最小的時間複雜度和空間複雜度,那麼如何做?
調整陣列元素順序
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。1,2,3,4,5,6,7 1,3,5,7,2,4,6 以下實現了兩個方法,乙個是帶返回值的,另乙個是不帶返回值的。帶返回值的可...
調整陣列順序奇數前偶數後
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。思路 開兩個佇列,分別為queue1和queue2 輪詢陣列,把奇數放進queue1,把偶數放進queue2。然後把queue1和q...
陣列 調整陣列順序使奇數字於偶數前面
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。最簡單的方法就是把奇數和偶數按順序挑出來,分別放到vector裡,最後再把偶數的vector接到奇數vector的末尾。1 impo...