在Python中实现/运行合并排序

2024-04-18 18:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写一个程序,并试图实现merge sort算法(并使用一个名为merge的函数来处理merge步骤),我得到一个错误如下。我将L=[2,6,4,8,1]传递给合并排序的参数:

>>> L = [2, 6, 4, 8, 1]
>>> mergeSort(L)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    mergeSort(L)
  File "H:\CSIS 4014\WinPython-64bit-3.5.3.1Qt5\notebooks\sorts.py", line 19, in mergeSort
    mergeSort(left)
  File "H:\CSIS 4014\WinPython-64bit-3.5.3.1Qt5\notebooks\sorts.py", line 21, in mergeSort
    merge(L, left, right, p, q, r)
  File "H:\CSIS 4014\WinPython-64bit-3.5.3.1Qt5\notebooks\sorts.py", line 24, in merge
    left[len(left)+1] = 999999
IndexError: list assignment index out of range

以下是我的源代码:

^{pr2}$

我试着用切片来表示子数组的左右两边的变量,以及我教科书中的伪代码。我会很感激你的帮助!在


Tags: inpy程序算法linemergesortleft
1条回答
网友
1楼 · 发布于 2024-04-18 18:20:56
left[len(left)+1] = 999999

这总是一个错误。。。你特别想写一个不存在的元素。列表的最后一个元素位于left[len(left) - 1]。写入任何超出此值的索引都是错误的。在

也许你是想追加?在

^{pr2}$

相关问题 更多 >