題目:輸入乙個整數陣列,實現乙個函式來調整陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。
分析:如果不考慮時間複雜度,可以直接遍歷陣列,當碰到第乙個偶數的時候,拿出這個偶數,把這個數後面的所有數都往前面移動乙個位置,之後陣列的最後面會有乙個空位,把這個偶數放進去。由於碰到乙個偶數就需要移動o(n)個陣列,因此總的時間複雜度就是o(n^2)。
假設我們陣列為,我們使用兩個指標p1和p2,p1指向陣列第乙個元素,p2指向陣列最後乙個元素。如果p1指向的偶數,p2指向的是奇數,則交換使得奇數在偶數前面。p1指向1,p2指向5,p1向後移動,p1++,直到p1指向的是偶數,則停止移動。p1指向2,p2指向5,交換這兩個指標指向的值。交換後p2向前移動,p2--,直到p2指向的是奇數,則停止移動。p2指向4,p2指向3,停止移動。p1++,p1指向3,p1指向4,停止移動。p2在p1指標的前面,則全部調整完了。
測試用例:
功能測試(輸入陣列中奇數偶數交替出現,輸入陣列中奇數都在偶數前面,輸入陣列中偶數在奇數前面)
特殊測試(輸入空指標,輸入陣列中只包含乙個數字)
**如下:
void reorderoddeven (int *pdata,unsigned int length)
{ if(pdata==null || length==0)
return;
int *p1=pdata;
int *p2=pdata+length-1;
while(p1
調整陣列順序使奇數字於偶數前 python
解題思路 此題有兩個解題思路,我先寫出第乙個,後續補充 1.利用python的特點,建立兩個陣列,乙個存放奇數,乙個存放偶數,最後將兩個陣列合併即可。這題麻煩的一點是要保持順序。輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並...
調整陣列順序使奇數字於偶數前 python
思路1 從頭遍歷找到偶數從陣列中刪除並移動到陣列末尾 arr 2 3,4 5,8 7,1 for x in range 0 len arr if arr x 2 0 s arr x arr.remove arr x print arr 思路2 兩個指標,第乙個初始化指向陣列的第乙個數字,只向後移動 ...
Python 調整陣列順序使奇數字於偶數前面
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,是的所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。coding utf 8 時間複雜度為o n 空間複雜度為o n class solution def reorderarray s...