我正在尝试使用python实现一个合并排序算法。我正在对单词进行排序,并且我得到了一个令人困惑的错误。我想知道这里是否有人有任何输入或可以提供任何帮助。
守则:
def mergeSort(A, p, r):
if p < r:
q = [(p + r) / 2]
mergeSort(A, p, q)
mergeSort(A, q + 1, r)
merge(A, p, q, r)
def merge(A, p, q, r):
n1 = q - p + 1
n2 = r - q
L = []
R = []
for i in range(n1):
L.append(A[p + i - 1])
for j in range(n2):
R.append(A[q + j])
L.append(infinity)
R.append(infinity)
i = 0
j = 0
for k in range(p,r):
if L[i] <= R[j]:
A[k] = L[i]
i = i + 1
else:
A[k] = R[j]
j = j + 1
testSortingList = ['joe', 'test', 'john', 'aaaa', 'a']
start = 0
end = 5
mergeSort(testSortingList, start, end)
print(testSortingList)
错误消息:
Traceback (most recent call last): File "c:\Users\josep\OneDrive\Desktop\CS340_Project1\main.py", line 94, in <module>
mergeSort(testSortingList, start, end) File "c:\Users\josep\OneDrive\Desktop\CS340_Project1\main.py", line 27, in mergeSort
mergeSort(A, p, q) File "c:\Users\josep\OneDrive\Desktop\CS340_Project1\main.py", line 25, in mergeSort
if p < r:
^^^^^ TypeError: '<' not supported between instances of 'int' and 'list'
1条答案
按热度按时间2q5ifsrm1#
在
mergeSort
函数中指定q = [(p + r) / 2]
其将一个元素列表分配给Q。
然后,您需要使用
q
调用mergeSort
,这将在p
-int和q
-list示例之间进行比较。