Я пытаюсь реализовать сортировку слиянием в Python, которая сортирует либо по возрастанию, либо по убыванию в зависимости от параметра, который вы передаете.Я работал с двумя отдельными функциями, но я не могу заставить его работать в одной функции.
def mergeSort(L, ascending = True):
print('Mergesort, Parameter L:')
print(L)
result = []
if len(L) == 1:
return L
mid = len(L) // 2
teilliste1 = mergeSort(L[:mid], ascending)
teilliste2 = mergeSort(L[mid:], ascending)
x, y = 0, 0
while x < len(teilliste1) and y < len(teilliste2):
if ascending:
if teilliste1[x] > teilliste2[y]:
result.append(teilliste2[y])
y = y + 1
else:
result.append(teilliste1[x])
x = x + 1
else:
if teilliste1[x] < teilliste2[y]:
result.append(teilliste2[y])
y = y + 1
else:
result.append(teilliste1[x])
x = x + 1
result = result + teilliste1[x:]
result = result + teilliste2[y:]
return result
mergeSort(list, True) # sort in ascending order
mergeSort(list, False) # sort in descending order
Простое переключение> в операторе if сделает его нисходящим, но если я попытаюсь сделать оба водна функция, это всегда портит мой результат.Есть предложения?