python--堆排序

来源:互联网 发布:淘宝内衣店铺介绍 编辑:程序博客网 时间:2024/06/05 04:50
***建立最大堆,然后将最大堆的头节点和最后一个节点互换,这样最后一位就是最大值,然后循环进行最大堆的简历***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
原创粉丝点击