首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中实现堆排序算法在运行时接收递归错误

在Python中实现堆排序算法在运行时接收递归错误
EN

Stack Overflow用户
提问于 2022-09-24 00:29:23
回答 1查看 43关注 0票数 0

我试图实现堆排序算法来对列表进行排序,但是接收到以下错误代码: RecursionError:最大递归深度超过了请告诉我,如果发现任何问题,我将在下面发布函数和助手函数如下:

代码语言:javascript
复制
def heap_sort(A):
    heap_size = _build_max_heap(A)
    for i in range(heap_size // 2, -1):
        A[0], A[i] = A[i],A[0]
        heap_size = heap_size - 1
        _max_heapify(A,heap_size, I)

def _build_max_heap(A):
    heap_size = len(A)
    for i in range(heap_size // 2):
        _max_heapify(A,heap_size, I)
    return heap_size

def _left(I):
    return (2*i)+1

def _right(i):
    return (2*i)+2

def _max_heapify(A, heap_size, i ):
     l = _left(i)
    r = _right(i)
    if l < heap_size and A[i] < A[l]:
        largest = l
    else:
        largest = i
    if r < heap_size and A[largest] < A[r]:
        largest = r
    if largest != i:
       A[i], A[largest] = A[largest], A[i]
    _max_heapify(A,heap_size, largest)
EN

回答 1

Stack Overflow用户

发布于 2022-09-24 00:38:42

您的问题是由于您的_max_heapify函数递归地调用了自己,并且不管作为参数传递给它的是什么,它总是调用自己。要使递归工作,必须有这样一个条件,即递归函数不调用自己。您需要修改您的逻辑,以便这是case...so,在某些情况下,通过执行不调用自己的_max_heapify来停止递归。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73833995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档