def heapSort(self, arr): if arr == None and len(arr) == 0: print("Input error") else: self.heap = arr self.heap_size = len(arr) self.build_max_heap(arr) while (self.heap_size > 0): self.max_heapify(0) Util.swap(arr, 0, self.heap_size - 1) self.heap_size = self.heap_size - 1
def max_heapify(self, i): # arr check, heapsizecheck if len(self.heap) and i < self.heap_size: largest = i left = 2 * i + 1 right = 2 * i + 2 if left < self.heap_size and self.heap[largest] < self.heap[left]: largest = left if right < self.heap_size and self.heap[largest] < self.heap[right]: largest = right if largest != i: Util.swap(self.heap, i, largest) self.max_heapify(largest)