さて、私は一般的なクイック選択関数を開発しました。これは、リストの中央値を見つけるために使用されます。
k = len(aList)//2 and the list is aList = [1,2,3,4,5]
では、ピボットが毎回リストの最初の項目から開始された場合、プログラムはどのように異なる動作をするでしょうか。センターにしないといけないの?また、関数の経過時間を見つけるために、どこで time.clock() を開始する必要がありますか。ここにコードがあります
def quickSelect(aList, k)
if len(aList)!=0:
pivot=aList[(len(aList)//2)]
smallerList = []
for i in aList:
if i<pivot:
smallerList.append(i)
largerList=[]
for i in aList:
if i>pivot:
largerList.append(i)
m=len(smallerList)
count=len(aList)-len(smallerList)-len(largerList)
if k >= m and k<m + count:
return pivot
elif m > k:
return quickSelect(smallerList,k)
else:
return quickSelect(largerList, k - m - count)