2017-04-18 63 views
2
import random 
import time 

def insertion_Sort(A): 

    if len(A) == 1 : 
     return A 
    else : 
     S = [A[0]] 
     for i in range(1,len(A)): 
      j = i-1 
      while j >= 0: 
       if A[i] > S[j]: 
        S.insert((j+1),A[i]) 
        break 
       else : 
        j = j-1 
      if j==-1: 
        S.insert(0,A[i]) 
     return S 




def quick_Sort(A): 

    if not A: 
     return [] 
    else: 
     pivot = random.randint(0, len(A) - 1) 
     pivot_index = A[pivot] 
     L = quick_Sort([l for i,l in enumerate(A) 
          if l <= pivot_index and i != pivot]) 
     R = quick_Sort([r for r in A if r > pivot_index]) 
     return L + [pivot_index] + R 





RN = [random.randrange(0,10000) for k in range(100)] 

這是關於quick_sort和insertion_sort的代碼。我如何比較表演的數量?

我想比較兩件事情,即insert_sort(RN)的執行次數和quick_sort(RN)的執行次數。

我該如何比較這些東西?

+1

使用'timeit'進行速度匹配 –

+2

可能的重複[如何比較python函數的性能?](http://stackoverflow.com/questions/7956834/how-do-i-compare-python-功能在性能方面) –

回答

0

有一個叫做timeit的python模塊,這正是你在找的東西。您可以按如下方式使用它:

from timeit import timeit 
print(timeit('insertion_Sort(params)','from __main__ import insertion_Sort',number=100)) 
print(timeit('quick_Sort(params)','from __main__ import quick_Sort',number=100)) 

你用你的參數Anumber=100與你希望它被測試的次數值替換params

+0

請在回答問題之前閱讀下面的評論 –