调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
- 解法一
高阶函数。使用Python中的高阶函数filter()和匿名函数lambda()。过滤得到奇数数组和偶数数组,通过列表拼接“+”操作得到结果。
ps: 列表拼接“+”操作和append的复杂度比较
1. + 操作
根据下面的结果,可以看出+操作开辟了一块新的内存空间,将原有a的列表拷贝到这块空间上在加上新的元素,变量b指向这个新的对象。
>>> a = [1,2,3]
>>> b = a + [4]
>>> id(a)
228129800L
>>> id(b)
30855688L
>>> a
[1, 2, 3]
>>> b
[1, 2, 3, 4]
>>>
- append操作
不同于“+”, append不会开辟新的内存空间。
>>> a = [1,2,3]
>>> id(a)
228128584L
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> id(a)
228128584L
>>>
- 解法二
插入排序变形。将数组array划分为奇数区和偶数区。从index=1处开始遍历,如