2018-09-20调整数组顺序是奇数位于偶数前面

题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

我的思路:

  1. 首先排除特殊情况,当数组少于两个元素的时候,不需要排序,直接返回数组。
  2. 然后以i为标进行遍历,同时设置flag标记已经排序的奇数最后一位。
  3. 当i指向偶数时,flag不变,i继续循环后移。
  4. 当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

你可能感兴趣的:(2018-09-20调整数组顺序是奇数位于偶数前面)