堆排序前传--树与二叉树简介
特殊且常用的树--二叉树
两种特殊的二叉树
二叉树的存储方式
二叉树小结
堆排序
堆这个玩意.......
堆排序过程:
堆排序的算法程序(程序需配合着下图理解):
def sift(data,low,high): # 调整函数 i = low # 树的根 也就是父亲 ,这里只领导 j = 2 * i + 1 # 根的左孩子 也就是 儿子 ,这里指小领导 tmp = data[i] # 把根 取出来 做调整 , 在这里 领导 while j <= high: # high其实就是 根的右儿子(也就是最后一个儿子),如果 j= high 则表示没有右儿子,也就是说这里必须有儿子在 if j < high and data[j] < data[j + 1]: # j < high 代表有右儿子 , data[j] < data[j + 1] 说明右儿子比左儿子大 j += 1 # 这个 j 则变为右儿子 ,也就是 若有比 j 大的值,则 j 就变为比他大的那个值 if tmp < data[j]: # 如果领导不能干 data[i] = data[j] # 则小领导上位 i = j # 小领导变为大领导 j = 2 * i + 1 # 小小领导变为小领导 else: # 如果领导能干 break # 那就待着吧 data[i] = tmp # 到最后 i 这里肯定会有空位 ,所以无论 tem 是谁 都要占住这个空位
原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/9214726.html
时间: 2024-11-14 13:08:32