code: def merge_sort(arr):
      
      # Our recursive base case
      if len(arr) <= 1:
          return arr
      mid = len(arr) // 2
      # Perform merge_sort recursively on both halves
      left, right = merge_sort(arr[:mid]), merge_sort(arr[mid:])
  
      # Merge each side together
      return merge(left, right, arr.copy())
docs: Merge Sort
          Complexity: O(n log(n))