# coding: utf-8 class Solution: # @param A: Given an integer array # @return: void def heapify(self, A): # write your code here ''' 为ä»ä¹ä»1/2çä½ç½®ä»åå¾åéåï¼ å 为对äºå ä¸ä¸æ 为içå ç´ ï¼åèç¹ä¸æ 为i * 2 + 1åi * 2 + 2ï¼ å¯¹äºä¸æ 大äº1/2ä½ç½®çå ç´ ä¸å®æ¯å¶åèç¹ï¼æ é¡»ååä¸è°æ´ã ''' for i in xrange((len(A) - 1) / 2, -1, -1): while i < len(A): left, right = i * 2 + 1, i * 2 + 2 min_pos = i if (left < len(A)) and (A[left] < A[min_pos]): min_pos = left if (right < len(A)) and (A[right] < A[min_pos]): min_pos = right if min_pos != i: # è°æ´A[i]å ç´ ä½ç½®ï¼ç»§ç»åä¸è°æ´ã A[i], A[min_pos] = A[min_pos], A[i] i = min_pos else: # min_pos没åï¼A[i]æ é¡»è°æ´ï¼ç»æå¾ªç¯ã break # medium: http://lintcode.com/zh-cn/problem/heapify/