题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
Solution1:
第一种算法用的是冒泡排序的思想,只需要把执行语句从比较大小换位置改为判断是不是奇偶数改位置。
时间复杂度为O(N^2)
CODE:
class Solution:
def reOrderArray(self,array):
if not array:
return []
else:
for i in range(len(array)-1):
for j in range(len(array)-1):
if array[j] % 2 == 0 and array[j+1] % 2 != 0:
temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
return array
Solution2:
定义两个奇偶数空数组,遍历原先数组判断奇偶数,若是奇数放入奇数数组,若是偶数,放入偶数数组。最后将两个数组按照奇数在前偶数在后的顺序相加。
时间复杂度为O(N)
CODE:
class Solution:
def reOrderArray(self,array):
if not array:
return []
else:
odd = []
even = []
for i in range(len(array)):
if array[i] % 2 == 0:
even.append(array[i])
if array[i] % 2 != 0:
odd.append(array[i])
return odd + even