堆排序
# 堆排序的向下调整性 # 排序步骤:建堆 交换堆顶元素和最后一个元素 调整使堆重新有序 i的指向前移(i指向最后一个元素)重复2以后的步骤 # 交换步骤将堆中的最大元素移动到了堆的最后位置,排序完成后,得到的是一个升序序列 # 大根堆的排序 # 向下调整 def sift(li,low,high): """ :param li:调整的列表 :param low:调整的堆的堆顶元素的位置 :param high:调整的堆的最后一个叶子节点的位置 :return """ i = low j = 2 * i + 1 tmp = li[i] while j<=high: # 判断左右两节点,哪个更大,大的为j j = j+1 if jli[j] else j # 判断i和j哪个大,大的放到i的位置,i指向当前j的位置,j指向新的i的下一层 if tmp 堆排序思路可参见: