:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字予陣列的後半部分。
這個題目要求把奇數放在陣列的前半部分, 偶數放在陣列的後半部分,因此所有的奇數應該位於偶數的前面。也就是說我們在掃瞄這個陣列的時候, 如果發現有偶數出現在奇數的前面,我們可以交換它們的順序,交換之後就符合要求了。
因此我們可以維護兩個指標,第乙個指標初始化時指向陣列的第乙個數字,它只向後移動:第二個指標初始化時指向陣列的最後乙個數字, 它只向前移動。在兩個指標相遇之前,第乙個指標總是位於第二個指標的前面。如果第乙個指標指向的數字是偶數,並且第二個指標指向的數字是奇數,我們就交換這兩個數字。
#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 用兩個指標,頭指標指向陣列開始,尾指標指向陣列...