quicksort.py 614 B

123456789101112131415161718192021222324252627
  1. import time
  2. import random
  3. def quicksort(l, lo, hi):
  4. if lo < hi:
  5. p = partition(l, lo, hi)
  6. quicksort(l, lo, p - 1)
  7. quicksort(l, p + 1, hi)
  8. def partition(l, lo, hi):
  9. pivot = l[hi]
  10. i = lo - 1
  11. for j in range (lo, hi):
  12. if l[j] < pivot:
  13. i += 1
  14. l[i], l[j] = l[j], l[i]
  15. l[i+1], l[hi] = l[hi], l[i+1]
  16. return i + 1
  17. if __name__ == "__main__":
  18. q = 1000000
  19. vals = [random.randint(0,q) for _ in range(0,q)]
  20. start = time.time()
  21. quicksort (vals, 0, len(vals) - 1)
  22. print ("ended after {}", time.time() - start)
  23. # print (vals)