2018-09-20調(diào)整數(shù)組順序是奇數(shù)位于偶數(shù)前面

題目描述:
輸入一個(gè)整數(shù)數(shù)組,實(shí)現(xiàn)一個(gè)函數(shù)來(lái)調(diào)整該數(shù)組中數(shù)字的順序,使得所有的奇數(shù)位于數(shù)組的前半部分,所有的偶數(shù)位于數(shù)組的后半部分,并保證奇數(shù)和奇數(shù),偶數(shù)和偶數(shù)之間的相對(duì)位置不變。

我的思路:

  1. 首先排除特殊情況,當(dāng)數(shù)組少于兩個(gè)元素的時(shí)候,不需要排序,直接返回?cái)?shù)組。
  2. 然后以i為標(biāo)進(jìn)行遍歷,同時(shí)設(shè)置flag標(biāo)記已經(jīng)排序的奇數(shù)最后一位。
  3. 當(dāng)i指向偶數(shù)時(shí),flag不變,i繼續(xù)循環(huán)后移。
  4. 當(dāng)i指向奇數(shù)是分兩種情況:
    a. 前面一位就是奇數(shù)。說(shuō)明前邊是已經(jīng)正確的序列,只需要將flag后移一位,然后i繼續(xù)循環(huán)
    b. 前面一位是偶數(shù)。這時(shí)候需要將當(dāng)前的元素插至flag后面一位。然后flag后移一位,i繼續(xù)循環(huán)。

我的解答:

# -*- 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容