我的堆也在工作

2024-10-03 06:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的min-heap代码。这是我家庭作业的一部分:

def heapify(i):
    global end,a
    l=2*i+1        
    if l>end:
        return None
    r=2*i+2
    minarg=i        
    if a[i]>a[l]:
        minarg=l
    if r<=end:
        if a[minarg]>a[r]: minarg=r
    if a[i]==a[minarg]:
        return None
    else:
        a[i],a[minarg]=a[minarg], a[i]
        heapify(minarg)

def buildHeap(start):
    global end,a
    if start*2+1>end:
        return None
    buildHeap(start*2+1)
    buildHeap(start*2+2)
    heapify(start)

它应该是工作,但我得到的时间限制超过了大型测试用例。我做错什么了吗?你知道吗


Tags: 代码nonereturnifdefminglobalstart
1条回答
网友
1楼 · 发布于 2024-10-03 06:21:50

Python中的函数调用占用时间,递归占用空间。你知道吗

为了节省递归的时间,人们通常把它转换成一个循环。这通常需要使用专门的日期“内存管理”来处理安全空间。你已经这样做了(和。。。嗯哼。。。全局变量)。你知道吗

如果那是你的家庭作业,那就去做吧,这是可行的,但不是微不足道的。你知道吗

相关问题 更多 >