劍指offer 調整陣列順序使奇數字於偶數前面

2021-10-03 03:18:28 字數 1163 閱讀 4382

題目描述

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

初始想法是從前向後找偶數,從後面找到最後乙個奇數,每找到乙個偶數就插入到這個奇數或後來插入的偶數之後,但是我寫的時間複雜度太高,沒辦法滿足要求。放個**

class solution 

int temp = array[j];

int i=0,m,t;

while(array[i]!=temp)

{if(array[i]%2==0)

{m = array[i];

for(t=i;t看到說原書中的解法是利用類似快排的思想,互相交換,**如下:

int i=0;

int j=array.length-1;

while(i

但是明顯無法滿足要求的穩定性,所以採用

1、一邊遍歷一邊將偶數插入到陣列之後並刪除當前偶數

# -*- coding:utf-8 -*-

class solution:

def reorderarray(self, array):

# write code here

#從前向後查詢,找到偶數,插入到陣列之後

j=len(array)

i=0while i2、氣泡排序思想奇數前是偶數就向前冒泡

# -*- coding:utf-8 -*-

class solution:

def reorderarray(self, array):

# write code here

n=len(array)

for i in range(n):

j = n-1

while j>i:

if array[j]%2==1 and array[j-1]%2==0:

t = array[j-1]

array[j-1] = array[j]

array[j] = t

j-=1

return array

3、還可以空間換時間,用另乙個陣列儲存所需值,略

劍指offer 調整陣列順序

時間限制 1秒 空間限制 32768k 本題知識點 陣列 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。首先想到的是利用兩個輔助陣列,乙個儲存奇數,乙個儲存偶數,這樣的...

劍指offer(調整陣列順序)

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。1 暴力解法 從前到位掃瞄陣列,如果出現前面是偶數後面是奇數的情況,則交換。其中使用氣泡排序的思想。從後面朝前比較,使用外迴圈控制趟...

劍指offer(十三) 調整陣列順序

題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。題解 思路簡單的解法就是,建兩個臨時陣列,乙個奇數陣列,乙個偶數陣列,最後再組合起來即可,時間複雜度為o n 一解 pub...