调整数组顺序使奇数位于偶数前面
【题目】:
输入一个整数数组,实现一个函数来调整数组中数字的顺序,使得所有的奇数位于数组前半部分,偶数位于数组后半部分。
【解题思路】:
使用双指针,一个从前往后搜索【指向偶数】,一个从后往前搜索【指向奇数】。直到两个指针重合。
def re_order_odd_even(num):
if len(num) == 0:
return
first, second = 0, len(num) - 1
while first < second:
while first < len(num) and num[first] & 1 == 0:
first += 1
while second < len(num) and num[second] & 1 == 1:
second -= 1
if first < second:
tmp = num[first]
num[first] = num[second]
num[second] = tmp
return num
# test
obj = re_order_odd_even([2, 1, 3, 5, 4, 6])
print(obj)
运行结果: