0
所以這裏是我最小的代碼。這是我功課的一部分:我的堆工作太慢
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)
它應該是工作,但我得到超過大型測試案件的時間限制。難道我做錯了什麼?
您可以提出問題鏈接 – 2013-02-25 04:54:07
您可以將'buildHeap()'轉換爲循環而不是遞歸函數調用。 – 2013-02-25 05:07:21
另外,這與您的速度問題無關,但您不應該真正使用全局變量。 – 2013-02-25 05:07:46