描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
虽然讨论组说可以用到冒泡排序的思想,从右边开始遍历,如果遍历到一个奇数,就把这个奇数记下来放到第一个偶数的前面,然后依次类推,所以偶数的顺序不会变,只会慢慢后退,插入的奇数因为是从右边开始遍历的,所以找到的第二个奇数应该插入到第一个奇数的左边。
相当于冒泡排序每一次确定一个数的位置。
还有就是直接找相邻的奇偶数,然后交换位置,但是会超时。
class Solution:
def reOrderArray(self , array ):
# write code here
if not array:
return []
for passnum in range(len(array)-1, 0, -1):
for i in range(passnum):
if array[i] % 2 == 0 and array[i+1] % 2 != 0:
array[i], array[i+1] = array[i+1], array[i]
return array
还有就是从头开始遍历数组,找到一个偶数就把它移到数组的最后面。
class Solution:
def reOrderArray(self , array ):
# write code here
l = len(array)
low = 0
while low <=l-1:
if array[low] %2 ==0:
temp = array.pop(low)
array.append(temp)
l -=1
else:
low +=1
return array