python 基本情况比较之间的MergeSort类型错误

6za6bjd0  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(127)

我正在尝试使用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'
2q5ifsrm

2q5ifsrm1#

mergeSort函数中指定
q = [(p + r) / 2]
其将一个元素列表分配给Q。
然后,您需要使用q调用mergeSort,这将在p-int和q-list示例之间进行比较。

相关问题