Guest User

Untitled

a guest
Jul 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. def merge(left, right):
  2. """ Merges two sorted lists into one sorted list """
  3. result = []
  4. while len(left) > 0 or len(right) > 0:
  5. if len(left) > 0 and len(right) > 0:
  6. if left[0] <= right[0]:
  7. result.append(left.pop(0))
  8. else:
  9. result.append(right.pop(0))
  10. elif len(left) > 0:
  11. result.append(left.pop(0))
  12. elif len(right) > 0:
  13. result.append(right.pop(0))
  14. return result
  15.  
  16. def merge_sort(l):
  17. if len(l) <= 1:
  18. return l
  19. middle = len(l)/2
  20. left = merge_sort(l[:middle])
  21. right = merge_sort(l[middle:])
  22. return merge(left, right)
  23.  
  24. if __name__ == '__main__':
  25. import random
  26. test = [random.randint(0, 25) for x in xrange(100)]
  27. import time
  28. start = time.time()
  29. print 'unsorted: ', test
  30. print 'sorted: ', merge_sort(test)
  31. end = time.time()
  32. print 'time: ', end-start, 'ms'
  33. assert sorted(test) == merge_sort(test)
Add Comment
Please, Sign In to add comment