- def merge_sort(array):
- if len(array) < 2:
- return array
- l = len(array) // 2
- left, right = array[:l], array[l:]
- return combine(merge_sort(left), merge_sort(right))
- def combine(left, right):
- l, r = 0, 0
- c = []
- while l < len(left) and r < len(right):
- if left[l] <= right [r]:
- c.append(left[l])
- l += 1
- else:
- c.append(right[r])
- r += 1
- return c+left[l:]+right[r:]