fork download
  1. def merge_sort(arr) :
  2. n = len(arr)
  3. if n <= 1 :
  4. return arr
  5. mid = n//2
  6. return merge(merge_sort(arr[:mid]), merge_sort(arr[mid:]))
  7.  
  8. def merge(arr1, arr2) :
  9. result = []
  10. while (len(arr1) > 0) and (len(arr2) > 0) :
  11. if arr1[0] < arr2[0] :
  12. result.append(arr1[0])
  13. arr1 = arr1[1:]
  14. else:
  15. result.append(arr2[0])
  16. arr2 = arr2[1:]
  17.  
  18. result.extend(arr1)
  19. result.extend(arr2)
  20. return result
  21.  
  22. print(merge_sort([10,7,5,15,3,8,9,5,10,3,1]))
Success #stdin #stdout 0.02s 27704KB
stdin
Standard input is empty
stdout
[1, 3, 3, 5, 5, 7, 8, 9, 10, 10, 15]