【发布时间】:2022-01-17 01:43:47
【问题描述】:
我必须使用插入排序和使用递归而不使用循环对数组进行排序。我已经尝试过,但它没有对任何东西进行排序。这是我的代码:
def recursiveInsertionSort(array, i, j):
n = len(array)
if i < n:
temp = array[i]
j = i - 1
if j >= 0 and array[j] > temp:
array[j + 1] = array[j]
recursiveInsertionSort(array, i, j - 1)
array[j + 1] = temp
recursiveInsertionSort(array, i + 1, j)
return array
arr = [10, 8, 7, 50, 60, 3, 9, -1]
print(recursiveInsertionSort(arr, 1, 0))
输出是 [10, 8, 7, 50, 60, 3, 9, -1] 与给定数组相同。预期输出为 [-1, 3, 7, 8, 9, 10, 50, 60] 谁能帮我找出问题所在?
【问题讨论】:
-
编辑了帖子。
-
你的代码很可疑——你传递了一个参数 j,但它从未被使用过(你立即用
j = i - 1覆盖它的值) -
您能解释一下您的代码背后的逻辑吗?目前,您正在向我们展示一个不起作用的代码,并且您希望我们了解它应该做什么以及如何修复它以使其正确运行。由于它实际上并没有做你想做的事情,我们无法猜测你想要做什么。请添加英文句子来解释 i 和 j 是什么,逻辑是什么,以及这应该如何实现插入排序(例如,实际插入发生在哪里?)