0

さて、私は一般的なクイック選択関数を開発しました。これは、リストの中央値を見つけるために使用されます。

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)
4

1 に答える 1