diff --git a/sorts/merge_sort.py b/sorts/merge_sort.py index 0628b848b794..d7e9ba29cfcb 100644 --- a/sorts/merge_sort.py +++ b/sorts/merge_sort.py @@ -37,10 +37,20 @@ def merge(left: list, right: list) -> list: :return: Merged result """ result = [] - while left and right: - result.append(left.pop(0) if left[0] <= right[0] else right.pop(0)) - result.extend(left) - result.extend(right) + left_length = len(left) + right_length = len(right) + left_index = right_index = 0 + + while (left_index < left_length) and (right_index < right_length): + if left[left_index] < right[right_index]: + result.append(left[left_index]) + left_index += 1 + else: + result.append(right[right_index]) + right_index += 1 + + result.extend(left[left_index:]) + result.extend(right[right_index:]) return result if len(collection) <= 1: