Guest User

Untitled

a guest
Oct 16th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import time
  3.  
  4. def merge_sort(a):
  5. if len(a) == 1:
  6. return a
  7. else:
  8. lower = merge_sort(a[:len(a)//2])
  9. upper = merge_sort(a[len(a)//2:])
  10. return merge(lower, upper)
  11.  
  12. def merge(low, up):
  13. ret = []
  14. i, j = 0, 0
  15. while i < len(low) and j < len(up):
  16. if low[i] <= up[j]:
  17. ret.append(low[i])
  18. i += 1
  19. else:
  20. ret.append(up[j])
  21. j += 1
  22. ret += low[i:]
  23. ret += up[j:]
  24. return ret
  25.  
  26. def qsort(a):
  27. if a == []:
  28. return []
  29. else:
  30. pivot = a[0]
  31. lesser = qsort([x for x in a[1:] if x < pivot])
  32. greater = qsort([x for x in a[1:] if x >= pivot])
  33. return lesser + [pivot] + greater
  34.  
  35. def measure(fun, param):
  36. t0 = time.time()
  37. print(fun(param))
  38. elapsed = time.time() - t0
  39. print(fun.__name__ + ": " + str(elapsed) + " s")
  40.  
  41. if __name__ == "__main__":
  42. a = [3, 5, 2, 6, 4, 2, 6, 21, 65, 1, 10, 7, 4, 9, 8]
  43.  
  44. measure(merge_sort, a)
  45. measure(qsort, a)
Add Comment
Please, Sign In to add comment