我写了一个合并排序函数并认为我已经完成了..但在作业中它说该函数应该对实际列表进行排序而不是创建一个副本(所以我认为是按值调用而不是引用?)。现在,它不起作用,因为列表本身没有改变。
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 and teilliste1[x] > teilliste2[y]) or (not ascending and 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
liste1 = list([3, 2, -1, 9, 17, 4, 1, 0])
mergeSort(liste1)
print(liste1) # result will be the unsorted list
我需要在函数中更改什么以使其按值调用并对实际列表进行排序?
我知道我能做到
mergeResult = mergeSort(liste1)
print(mergeResult)
但显然我必须更改原始参数列表。