Определить рекурсивную функцию с именем sort
; он передается любым неупорядоченным списком; он возвращает новый список (не изменяя аргумент), который содержит каждое значение в списке аргументов, но не в порядке убывания.Рекурсивно сортировать два отдельных списка
Например, вызов sort([4,5,3,1,6,7,2])
бы назвать своего рода рекурсивно по спискам [4,5,3]
и [1,6,7,2]
, возвращая списки [3,4,5]
и [1,2,6,7]
соответственно, которые, когда слиты будет возвращать список [1,2,3,4,5,6,7]
.
Обратите внимание, что если длина списка ровная, оба подписок будут иметь одинаковый размер ; когда длина списка нечетна, естественно разделить ее на два списка, первый из которых имеет меньшее значение, чем второе.
Функция начинается так:
def sort(l):
Я знаю, как отделить л в два списка, например [4,5,3,1,6,7,2]
, я разделить их на [4,5,3]
и [1,6,7,2]
. Но я действительно не знаю, как рекурсивно сортировать каждую половину, когда функция sort имеет только один аргумент l.
Может кто-нибудь рассказать, как это сделать? Спасибо.
Вы должны Google для Quicksort/ –
Ваше слияния домашнего задание говорит «вызов' рода ([4,5,3,1,6,7,2]) 'будет вызывать 'sort' рекурсивно в списках' [4,5,3] 'и' [1,6,7,2] '. Какая часть сбивает с толку? –