python 实现堆排序

来源:互联网 发布:云和数据培训靠谱不 编辑:程序博客网 时间:2024/05/23 17:28
#原理:循环数组,依次构建最大堆,构建完以后第一个元素就为最大值 swap 到最后一个位置,#继续对 数组中 0~ last-1 这个新数组构建最大堆 依次类推 到最后构建完成arr = [55, 67, 89, 12, 4, 6, 2, 34, 33, 12]arrLen = int(len(arr))#调整三个元素堆def adjustThreeH(arr,p,length):    l = 2*p+1    r = 2*p+2    maxV = arr[p]    if l<=length and maxV<arr[l]:        maxV = arr[l]        arr[l] = arr[p]        arr[p] = maxV    if r <=length and maxV<arr[r]:        maxV = arr[r]        arr[r] = arr[p]        arr[p] = maxV#调整最大堆def adjustMaxH(length):    indexI =int(length/2)-1    while indexI>=0:        adjustThreeH(arr,indexI,length-1)        indexI-=1    temp = arr[length-1]    arr[length-1] = arr[0]    arr[0] = tempindexO = 0while indexO<arrLen:    adjustMaxH(arrLen-indexO)    indexO+=1print(arr)
0 0
原创粉丝点击