第2章 排序 第17節 三色排序練習題

2022-03-18 07:37:44 字數 960 閱讀 5467

有乙個只由0,1,2三種元素構成的整數陣列,請使用交換、原地排序而不是使用計數進行排序。

給定乙個只含0,1,2的整數陣列a及它的大小,請返回排序後的陣列。保證陣列大小小於等於500。

測試樣例:

[0,1,1,0,2,2],6

返回:[0,0,1,1,2,2]

class

threecolor

else

if (a[j] == 2

)

else

}return

a; }

vector

sortthreecolor2(vector a, int

n) else

if (a[index]==2

)

else

}return

a; }

};

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

class

threecolor:

def sortthreecolor(self, a, n):

# write code here

left=-1

right=n

index=0

while indexif a[index]==0

: left+=1

a[left],a[index]=a[index],a[left]

index+=1

elif a[index]==2

: right-=1

a[right],a[index]=a[index],a[right]

else

: index+=1

return a

演算法練習 兩指標之三色排序

輸入乙個整型陣列,每個元素在0 2 之間,其中0,1,2分別代表紅 白 藍。現要求對陣列進行排序,相同顏色的在一起,而且按紅白藍順序先後排列。要求時間複雜度為 o n 最容易想到的是排序,比如快排,歸併,堆排等,但它們的時間複雜度為o nlogn 與題意不符。第二種想到的是計數排序,掃瞄一遍過去,分...

第2章 排序 第15節 有序陣列合併練習題

有兩個從小到大排序以後的陣列a和b,其中a的末端有足夠的緩衝空容納b。請編寫乙個方法,將b合併入a並排序。給定兩個有序int陣列a和b,a中的緩衝空用0填充,同時給定a和b的真實大小intn和intm,請返回合併後的陣列。class merge else while m 0 return a pyt...

第2章 排序 第15節 有序陣列合併練習題

有兩個從小到大排序以後的陣列a和b,其中a的末端有足夠的緩衝空容納b。請編寫乙個方法,將b合併入a並排序。給定兩個有序int陣列a和b,a中的緩衝空用0填充,同時給定a和b的真實大小intn和intm,請返回合併後的陣列。class merge else while m 0 return a pyt...