python--堆排序

***建立最大堆,然后将最大堆的头节点和最后一个节点互换,这样最后一位就是最大值,然后循环进行最大堆的简历***
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值