Понимая это реализация сортировка слиянием на языке Python
Я пытаюсь понять этот код, который я нашел в интернете, однако я не могу понять его, потому что что-то сбивает меня с толку. Как вы можете видеть ниже, я поставил звездочку на запутанной части. В *1 он рекурсивно запускает функцию "merge_sort", так как же в *2 он может возвращать функцию "merge".Я бы
пожалуйста, не мог бы кто-нибудь объяснить мне, как это работает, потому что я не могу прогрессировать дальше, пока не узнаю, как это работает.
Что я уже пробовал:
def merge_sort(array): if len(array) <= 1: return array midpoint = int(len(array) / 2) *1 left, right = merge_sort(array[:midpoint]), merge_sort(array[midpoint:]) *2 return merge(left, right) def merge(left, right): result = [] left_pointer = right_pointer = 0 while left_pointer < len(left) and right_pointer < len(right): if left[left_pointer] < right[right_pointer]: result.append(left[left_pointer]) left_pointer += 1 else: result.append(right[right_pointer]) right_pointer += 1 result.extend(left[left_pointer:]) result.extend(right[right_pointer:]) return result