fork download
  1. def merge_sort(arr):
  2. if len(arr) <= 1:
  3. return arr
  4.  
  5. mid = len(arr) // 2
  6. left = merge_sort(arr[:mid])
  7. right = merge_sort(arr[mid:])
  8. result = []
  9. i = j = 0
  10.  
  11. while i < len(left) and j < len(right):
  12. if left[i] < right[j]:
  13. result.append(left[i])
  14. i += 1
  15. else:
  16. result.append(right[j])
  17. j += 1
  18. result.extend(left[i:])
  19. result.extend(right[j:])
  20.  
  21. return result
  22.  
  23. lst = [38, 27, 43, 3, 9, 82, 10]
  24. sorted_lst = merge_sort(lst)
  25.  
  26. print(sorted_lst)
  27.  
Success #stdin #stdout 0.07s 14068KB
stdin
1 3 7 5 2 4
stdout
[3, 9, 10, 27, 38, 43, 82]