목록을 최대 힙으로 힙화
6560 단어 tutorialpythonprogramming
O(1)
에서 최소값/최대값을 찾을 수 있습니다.O(logn)
에서 삽입/삭제를 수행할 수 있는 반면 배열에서는 삽입이 수행됩니다O(n)
.힙에 대해 자세히 알아보려면 시작하는 데 도움이 되는 몇 가지 리소스가 있습니다.
배열을 힙으로 변환하는 방법입니다.
list = [20, 5, 30, 10, 15, 45]
def getChildren(pIndex, list):
leftIndex = pIndex * 2 + 1
rightIndex = pIndex * 2 + 2
left = -1
if leftIndex < len(list):
left = list[leftIndex]
right = -1
if rightIndex < len(list):
right = list[rightIndex]
return left, right
def heapify(list):
for i in range(len(list)-1, -1, -1):
p = list[i]
left, right = getChildren(i, list)
bigChild = max(left, right)
bigChildIndex = 2 * i + 1
if right == max(left, right):
bigChildIndex = 2 * i + 2
j = i
while p < bigChild and bigChildIndex < len(list) and j < len(list):
list[j] = bigChild
list[bigChildIndex] = p
j = bigChildIndex
left, right = getChildren(j, list)
bigChild = max(left, right)
bigChildIndex = 2 * j + 1
return list
print(heapify(list))
Photo by Pixabay
Reference
이 문제에 관하여(목록을 최대 힙으로 힙화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tahirraza_se/heapify-a-list-into-max-heap-5en4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)