1.题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
2.解题思路
方法一:
这个就是冒泡排序的思路,可以自己再纸上画一画。首先确定外层循环次数,即array.size(),然后进行内层循环,代码中是从后面往前面排序,比如2,1,4,3。如果满足前偶后奇数,交换循序,变成1,2,3,4,其中首尾已经排好序了,故结束条件设置为array.size()-i,然后从倒数第二位到顺数第二位再排序。
其实第一层循环只需要array.size()/2.因为内层循环一次,能将首尾分别拍好一个数字。还有就是可以直接从前面往后面排序。
方法二:
3.代码实现
方法一:
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
for i in range(0,len(array)):
for j in range(len(array)-1,i,-1):
#类似冒泡排序,逢前偶后奇就交换
if array[j-1]&1==0 and array[j]&1!=0:
array[j-1],array[j]=array[j],array[j-1]
return array