NB二人组----堆排序

Posted zhuifeng-mayi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NB二人组----堆排序相关的知识,希望对你有一定的参考价值。

堆排序前传--树与二叉树简介

技术分享图片

特殊且常用的树--二叉树 

 技术分享图片

两种特殊的二叉树

 技术分享图片

二叉树的存储方式

 技术分享图片

二叉树小结

 技术分享图片

堆排序

技术分享图片

 技术分享图片

堆这个玩意.......

 技术分享图片

技术分享图片

堆排序过程:

 技术分享图片

堆排序的算法程序(程序需配合着下图理解):

 技术分享图片技术分享图片

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 是谁 都要占住这个空位

 

以上是关于NB二人组----堆排序的主要内容,如果未能解决你的问题,请参考以下文章

算法 排序NB二人组 堆排序 归并排序

算法排序-NB三人组

排序NB三人组(快速排序/堆排序/归并排序)

十大经典排序算法

排序算法Nb三人组-快速排序

排序算法之NB三人组