码迷,mamicode.com
首页 > 其他好文 > 详细

基本数据结构--堆(Heap)

时间:2019-03-31 12:18:26      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:结构   基本数据   pre   col   最大   数据结构   添加   EAP   else   

堆:是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。
性质:
  • 堆中某个节点的值总是不大于或不小于其父节点的值;
  • 堆总是一棵完全二叉树。
把堆当做数组存储,堆里的元素有上浮,下沉操作,(上浮,下沉过程尽量满足最小堆或最大堆的性质,最小堆元素下沉的的过程往较大的儿子方向沉)
1、初始化堆,相当于建立一个完全二叉树,但在末尾每次添加元素后都要进行比较,上浮。
2、添加元素,往数组的最后面添加,然后进行上浮操作。
3、删除堆顶,堆顶元素与最后一个元素交换,删除最后一个元素,然后进行下沉操作。
Shift_down( i , n )    //n表示当前有n个节点
{
    while( i * 2 <= n)
    {
        T = i * 2 ;
        if( T + 1 <= n && 堆数组名[ T + 1 ] < 堆数组名[ T ])
            T++;
        if( 堆数组名[ i ] < 堆数组名[ T ] )
        {
           swap( 堆数组名[ i ] , 堆数组名[ T ] );
            i = T;
        }
        else break;
}
Shift_up( i )
{
    while( i / 2 >= 1)
    {
        if( 堆数组名[ i ] < 堆数组名[ i/2 ] )
        {
            swap( 堆数组名[ i ] , 堆数组名[ i/2 ]) ;
            i = i / 2;
        }
        else break;
}

 

基本数据结构--堆(Heap)

标签:结构   基本数据   pre   col   最大   数据结构   添加   EAP   else   

原文地址:https://www.cnblogs.com/didiaoxiaoguai/p/10630767.html

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