quickSelectアルゴリズム用に次の擬似コードが与えられました。いくつかのことについて少し混乱しています。quickSelectメソッドを呼び出すと、「k」に対して何を送信しますか。また、メソッドの最初でcount = 0を宣言する必要があるため、quickSelectの再帰呼び出しで常に0に戻されますが、これは必要なことではありません。助けてくれてありがとう、Pseudoを含めました。 -コードと以下の私のコード。
Function quickSelect(aList, k):
If aList is not empty:
pivot <- Choose the element at position (len(alist)//2)
smallerList <- All elements of aList smaller than pivot
largerList <- All elements of aList larger than pivot
count <- the number of occurences of pivot value in aList
m <- the size of smallerList
if k >= m and k < m + count then:
return pivot
if m > k:
return quickSelect(smallerList,k)
else:
return quickSelect(largerlist, k-m-count)
これは私が思いついたものです:
def quickSelect(aList, k):
pivot = aList[len(aList)//2]
smallerList = aList[:pivot]
largerList = aList[pivot:]
m = len(smallerList)
count = 0
for i in aList:
if i == pivot:
count = count + 1
if k >= m and k < m + count:
return pivot
if m > k:
return quickSelect(smallerList, k)
else:
return quickSelect(largerList, k-m-count)