파이썬으로 작성한 Max-Heapify의 코드다. 의사코드는 Introduction to Algorithms라는 MIT Press에서 나온 교재에서 참조했다.
#!/usr/bin/python # -*- coding: UTF-8 -*- def MaxHeapify(A, i): i = i-1 # List start from 0 l = (i*2)+1 if len(A) > (i*2)+1: r = (i*2)+2 if A[l] <= len(A) and A[l] > A[i]: largest = l else: largest = i if A[r] <= len(A) and A[r] > A[largest]: largest = r if not largest == i: A[i], A[largest] = A[largest], A[i] MaxHeapify(A, (largest+1)) # Because i = i-1 return A A = [27, 17, 3, 16, 13, 10, 1, 5, 7, 12, 4, 8, 9, 0] print MaxHeapify(A, 3) # Let a heap start from 1. So, 3 = A[2]
Leave a Reply