私はtriyngで、PythonでHeapSort関数を作成しています。heapsortのheapifyを使用してヒープを2つのサブヒープに分割する方法はありますか?
私は私の本の指示に従うことをしよう、とのルールに従っていないノードとヒープに正しい順序を復元fixHeap
のようないくつかの機能を使用しています:
def getMaxKnot(i,j,A):
k = max(A[i],A[j])
if k==A[i]:
return i
if k==A[j]:
return j
def fixheap(v,H): #basically restore an heap with a node not following heap rules
if (2*v+1)>len(H)-1:
return H
else:
u=getMaxKnot(2*v+1,2*v+2,H)
if H[u]>H[v]:
listoperations.swap(u,v,H) #swap item in position u and v
return fixheap(u,H)
、私は基本的に作成したいです私の関数fixheap
を使用して正しい順序を復元するために、左ツリーおよび右ツリーで再帰的に機能するheapify関数。
def heapify(A):
if A==[]:
return A
else:
heapify(LEFT TREE)
heapify(RIGHT TREE)
fixheap(0,A)
LEFT TREEとRIGHT TREEに私のアレイAを分割する方法上の任意のアイデア:
私の考えは以下の通りでしたか?
「ausiliar関数」とは何ですか? –
ウェブ上に見られるheapifyバージョンはすべて、配列をヒープに変換する単一の関数に基づいていました。 私はfixHeapを使い慣れた関数を呼び出しましたが、基本的に単純なdef関数です – sixpain
助けてください、申し訳ありません – sixpain