有乙個只由0,1,2三種元素構成的整數陣列,請使用交換、原地排序而不是使用計數進行排序。
給定乙個只含0,1,2的整數陣列a及它的大小,請返回排序後的陣列。保證陣列大小小於等於500。
測試樣例:
[0,1,1,0,2,2],6返回:[0,0,1,1,2,2]
classthreecolor
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...