演算法題 調整陣列順序使奇數字於偶數前面

2021-08-07 04:33:09 字數 1140 閱讀 3532

:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字予陣列的後半部分。

這個題目要求把奇數放在陣列的前半部分, 偶數放在陣列的後半部分,因此所有的奇數應該位於偶數的前面。也就是說我們在掃瞄這個陣列的時候, 如果發現有偶數出現在奇數的前面,我們可以交換它們的順序,交換之後就符合要求了。

因此我們可以維護兩個指標,第乙個指標初始化時指向陣列的第乙個數字,它只向後移動:第二個指標初始化時指向陣列的最後乙個數字, 它只向前移動。在兩個指標相遇之前,第乙個指標總是位於第二個指標的前面。如果第乙個指標指向的數字是偶數,並且第二個指標指向的數字是奇數,我們就交換這兩個數字。

#coding:utf-8

deftransfer

(a):

k = 0

p = len(a)-1

t = 0

while k != p:

if a[k] % 2 == 0:

while a[p] % 2 ==0:

p -= 1

t = a[k]

a[k] = a[p]

a[p] = t

k +=1

return a

if __name__ == '__main__':

a = [0,1,2,3,4,5,6,7,8,9]

print(transfer(a))

#coding:utf-8

def adjust_arr(a):

left = 0

right = len(a)-1

k = 0

while left < right:

if (a[left] % 2 == 0

anda[right] % 2 !=0):

k = a[right]

a[right] = a[left]

a[left] = k

left += 1

right -= 1

return

a#print(adjust_arr([2,4,6,8,10,1,3,5,7,9]))

print(adjust_arr([0,1,2,3,4,5,6,7,8,9]))

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

從右邊直到第乙個奇數 while left right number right 2 0 奇偶數交換 if left right int main sortoddbeforeeven number,n for i 0 i n i else return 0 題目描述 輸入乙個整數陣列,實現乙個函式來...

九度oj 1516 調整陣列順序使奇數字於偶數前面

時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 3105 解決 999 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。輸入 每個輸入檔案包含一組測試案...

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

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