码迷,mamicode.com
首页 > 编程语言 > 详细

NB二人组----堆排序

时间:2018-06-22 19:59:29      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ima   idt   png   class   特殊   存储   说明   while   color   

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

技术分享图片

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

 技术分享图片

两种特殊的二叉树

 技术分享图片

二叉树的存储方式

 技术分享图片

二叉树小结

 技术分享图片

堆排序

技术分享图片

 技术分享图片

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

 技术分享图片

技术分享图片

堆排序过程:

 技术分享图片

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

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

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二人组----堆排序

标签:ima   idt   png   class   特殊   存储   说明   while   color   

原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/9214726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!