首页 > 解决方案 > RecursionError 限制了我在大数组中的排序功能

问题描述

我需要帮助重写一些递归代码,这样我就不会遇到这个错误:

RecursionError: maximum recursion depth exceeded in comparison

我的算法应该采用一个充满随机整数的数组,并通过翻转整数对它们进行排序。然后它返回它所花费的翻转量。它工作正常,直到我得到大约 2^10 的大小。

def flippers(A, count = 0):
    for i in range(1,len(A)):

        j=i-1
        if(A[j]>A[j+1]):
            temp = A[j+1]
            A[j+1] = A[j]
            A[j] = temp
            j += 1
            count += 1
    for i in range(1,len(A)):
        if(A[i]<A[i-1]):
            return flippers(A, count)
    return count

我知道它并不完美,而且我可能会更好地编写代码。一旦我的数组达到 2^10 的大小,就会出现上述错误。任何帮助表示赞赏。谢谢!

标签: pythonrecursion

解决方案


由于不需要递归,这是最简单的排序算法:

for i in range(len(a)):
    for j in range(i+1, len(a)):
        if a[j] < a[i]:
            a[i], a[j] = a[j], a[i]

另请注意,在python中,不需要使用temp在2个变量之间切换,您可以简单地使用a[i], a[j] = a[j], a[i]


推荐阅读