def largest_to_last(arr, index):
if(len(arr) == 1):
return
largest_to_last(arr[:-1], index-1)
if(arr[index-1] > arr[index]):
arr[index-1], arr[index] = arr[index], arr[index-1]
# print(arr)
return
arr = [1,4,2,8,5,6]
largest_to_last(arr, len(arr)-1)
print(arr)
我必须使用递归将最大的元素推到数组的末尾。我在这里找不到任何错误,有人能帮忙吗?
当您传递arr[:-1]
时,将创建数组的副本,并且更改不会反映到原始列表中。这里有一个固定的、简单的实现:
def sort(arr, index):
if(len(arr) == 2):
if(arr[index-1] > arr[index]):
arr[index-1], arr[index] = arr[index], arr[index-1]
return arr
arr = sort(arr[:index], index-1)+[arr[index]]
if(arr[index-1] > arr[index]):
arr[index-1], arr[index] = arr[index], arr[index-1]
return arr
arr = [1,4,2,8,5,6]
arr = sort(arr, len(arr)-1)
print(arr)