필자는 triyng을 사용하여 Python에서 HeapSort 함수를 작성하고 몇 가지 보조 함수를 사용합니다.heaport에 대해 heapify를 사용하여 힙을 두 개의 하위 힙으로 나누는 방법은 무엇입니까?
는 는내 책 지침을 따르려고 노력하고, 노드가있는 힙의 올바른 순서를 복원 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)
, 난을 만들 기본적으로 원하는 왼쪽 트리 및 오른쪽 트리에서 재귀 적으로 작동하는 함수 heapify. fixheap
함수를 사용하여 올바른 순서로 복원합니다.
내 생각이었다 다음
def heapify(A):
if A==[]:
return A
else:
heapify(LEFT TREE)
heapify(RIGHT TREE)
fixheap(0,A)
LEFT TREE 우 트리로 내 배열 A를 분할하는 방법에 어떤 아이디어가?
: 원리는
fixheap
기능을 사용하는 방법을 사실과 크게 다르지 않다? –웹에서 볼 수있는 heapify 버전은 배열을 힙으로 변환하는 단일 함수를 기반으로합니다. 그래서 나는 fixHeap 익숙한 함수를 호출했지만, 기본적으로 간단한 def 함수입니다. – sixpain
Auxiliar, sorry – sixpain