题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
代码实现
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
'''
#编译错误
n=len(array)
f1=0
f2=0
r=n-1
l=n-2
while l >= 0:
if array[r] % 2 ==0:
r -=1
f1=1
if array[l] % 2 ==1 or (array[l]%2==0 and r==l):
l -=1
f2=0
if array[l] % 2 ==0 and r>l:
f2=1
if f1 and f2:
if r=l+1:
tmp = array[r]
array[r] = array[l]
array[l] = tmp
else:
for i in range(r-l):
tmp = array[l+i]
array[l+i] = array[l+i+1]
array[l+i+1] = tmp
return array
'''
'''依次从后遍历数组,遇到偶数,减减,
遇到奇数,移动位置,将此奇数位置前所有的数后移,此奇数放在第一位'''
n = len(array)
pos = n-1
for i in range(pos,-1,-1):
if array[pos]%2==0:
pos -= 1
else:
tmp = array[pos]
for j in range(pos,0,-1):
array[j] = array[j-1]
array[0] = tmp
return array
思路
依次从后遍历数组,遇到偶数,不移动数组元素,位置减减,遇到奇数,移动数组元素,将此奇数位置前所有的数后移,此奇数放在第一位