题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
我的思路:
- 首先排除特殊情况,当数组少于两个元素的时候,不需要排序,直接返回数组。
- 然后以i为标进行遍历,同时设置flag标记已经排序的奇数最后一位。
- 当i指向偶数时,flag不变,i继续循环后移。
- 当i指向奇数是分两种情况:
a. 前面一位就是奇数。说明前边是已经正确的序列,只需要将flag后移一位,然后i继续循环
b. 前面一位是偶数。这时候需要将当前的元素插至flag后面一位。然后flag后移一位,i继续循环。
我的解答:
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
flag = 0
if len(array) <2:
return array
for i in range(len(array)):
if array[i]%2 ==0:
continue
elif array[i]%2==1 and array[i-1]%2==1:
flag +=1
else:
for j in range(i,flag,-1):
self.exch(array,j,j-1)
flag +=1
return array
def exch(self,array,i,j):
tmp = array[i]
array[i] = array[j]
array[j] = tmp