题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
代码
Python(2.7.3)
最简单的办法就是利用Python的优点,不用排序直接将奇数和偶数拿出来存放,再合并到一起。
1
2
3
4
5
6
7
8
9
10
11# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
l1, l2 = [], []
for i in array:
if i % 2 == 0:
l2.append(i)
else:
l1.append(i)
return l1 + l2运行时间:23ms
占用内存:5624k
如果要求不能使用额外的空间,那么可以借鉴冒泡排序的思想。如果当前数为偶数,后一个数为奇数,则相互交换。
1
2
3
4
5
6
7
8
9
10
11
12# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
size = len(array)
for i in range(size):
for j in range(size - 1, i, -1):
if array[j - 1] % 2 == 0 and array[j] % 2 == 1:
tmp = array[j - 1]
array[j - 1] = array[j]
array[j] = tmp
return array运行时间:31ms
占用内存:5736k