JZ21-调整数组顺序使奇数位于偶数前面(一)
JZ21 调整数组顺序使奇数位于偶数前面(一)
描述
输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
数据范围:$0≤n≤5000$,数组中每个数的值 $0≤val≤10000$
要求:时间复杂度 $O(n)$,空间复杂度 $O(n)$
进阶:时间复杂度 $O(n2)$,空间复杂度 $O(1)$
示例1
1 | 输入:[1,2,3,4] |
示例2
1 | 输入:[2,4,6,5,7] |
示例3
1 | 输入:[1,3,5,6,7] |
题解
首先是简单暴力的方法,开两个新数组分别存奇偶数,遍历一遍找出来,再分别放进答案里就好。
然后是动点脑瓜子的方法,由于冒泡是稳定的,也就是说冒泡排序可以控制前后关系不变,我们只需要把冒泡排序的大小比较改成奇偶比较即可。
1 | class Solution: |