***建立最大堆,然后将最大堆的头节点和最后一个节点互换,这样最后一位就是最大值,然后循环进行最大堆的简历***
def Max_heap(self,array, array_len, root):
left = 2 * root + 1
right = left + 1
largest = root
if left < array_len and array[largest] < array[left]:
largest = left
if right < array_len and array[largest] < array[right]:
largest = right
if largest != root:
array[largest], array[root] = array[root], array[largest]
self.Max_heap(array, array_len, largest)
def sortIntegers2(self,array):
array_len = len(array)
for i in range((array_len-2)//2,-1,-1):
self.Max_heap(array, array_len, i)
for i in range(array_len-1,-1,-1):
array[0],array[i] = array[i],array[0]
self.Max_heap(array, i, 0)
return array
python--堆排序
最新推荐文章于 2023-08-10 09:30:00 发布