[英]Having issues implementing recursion in my attempt at a quick sort algorithm in Python
[英]Implementing heap sort algorithm in Python receiving recursion error when running
我试图实现堆排序算法来对列表进行排序,但收到以下错误代码:RecursionError:超出最大递归深度如果您发现任何问题,请告诉我我将在下面发布我的函数和辅助函数,如下所示:
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)
您的问题是由于您的_max_heapify
function 递归调用自身,并且它总是调用自身,无论作为参数传递给它什么。 为了使递归起作用,必须有一个条件变为真,使得递归 function 不会调用自身。 您需要修改您的逻辑,以便出现这种情况......以便在某些情况下通过执行不调用自身的_max_heapify
来停止递归。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.