fork download
  1. import time
  2.  
  3. def timeSort(sortfn, L):
  4. t1 = time.time()
  5. sortfn(L)
  6. t2 = time.time()
  7. return (t2 - t1)
  8.  
  9. # try, e.g.,
  10. # l = mixup(list(range(4000)))
  11. # timeAllSorts(l)
  12.  
  13. import random
  14. def quicksort(L):
  15. if len(L)<2: return L
  16. pivot_element = random.choice(L)
  17. small = [i for i in L if i< pivot_element]
  18. medium = [i for i in L if i==pivot_element]
  19. large = [i for i in L if i> pivot_element]
  20. return quicksort(small) + medium + quicksort(large)
  21.  
  22. def timeAllSorts(L):
  23.  
  24. Lcopy = L[:]
  25. qTime = timeSort(quicksort, Lcopy)
  26. sTime = timeSort(sorted, Lcopy)
  27.  
  28. print("{}\t sel:{:.2f} quick:{:.2f}".format(len(L),sTime, qTime))
  29.  
  30. l = list(range(8000,1,-1))
  31. timeAllSorts(l)
Success #stdin #stdout 0.08s 11552KB
stdin
Standard input is empty
stdout
7999	 sel:0.00 quick:0.06