问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

堆的插入删除过程和结果(数据结构考试)

发布网友 发布时间:2022-05-15 18:35

我来回答

1个回答

热心网友 时间:2024-03-02 13:57

 * 堆插入算法。(小顶堆)
 * 先将num插入堆尾,易知从新数据的父结点到根结点是一个有序的序列,
 * 将num插入到该有序序列当中,该过程为直接插入排序。
 * 未插入前数据长度为n。
 */
int HeapInsert(int *heap, int n, int num)
{
    int i, j;
 
    heap[n] = num;//num插入堆尾
    i = n;
    j = (n - 1) / 2;//j指向i的父结点
     
    //注意不要漏掉i!=0的条件。因为必须保证i有父结点j。j>=0并不能保证i!=0。
    //如果没有此条件,当i=0时,j=0,若heap[0]>num,程序就会陷入死循环。
    while (j >= 0 && i != 0)
    {
        if (heap[j] <= num)
            break;
        heap[i] = heap[j];
        i = j;
        j = (i - 1) / 2;
    }
    heap[i] = num;
 
    return 0;
}


/*
 * 堆删除算法。(删除堆顶元素)
 * n表示未删除前堆中数据的总数。
 */
int HeapDelete(int *heap, int n)
{
    //使用堆尾元素直接覆盖堆顶元素。
    heap[0] = heap[n - 1];
    //从堆顶到堆尾(此时堆中只有n-1个元素)进行堆调整。
    HeapAdjust(heap, 0, n - 1);
    return 0;
}
 
/*
 * 堆调整算法。(小顶堆)
 * 已知heap[top]结点的左右子树均为堆,调整堆中元素,使以heap[top]为根结点的树为堆。
 * n为堆中元素总数。
 */
int HeapAdjust(int *heap, int top, int n)
{
    int j = 2 * top + 1;    //左孩子结点
    int temp = heap[top];
 
    while (j < n)
    {
        if (j + 1 < n&&heap[j + 1] < heap[j])
            j++;    //使j指向左右孩子中较小的结点。
        if (heap[j] >= temp)
            break;
        heap[top] = heap[j];
        top = j;
        j = 2 * top + 1;
    }
    heap[top] = temp;
    return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我家300多k的网速为什么玩cf总是很迟钝,连切枪都很慢 CF切换枪的速度很慢 ...东西需要输入apple ID密码 我不知道怎么办?更新微信需要appleID_百... ...一遍id苹果手机的每次更新软件都需要输入id和密码请问怎么解决_百度... ...ID 我不知道密码是什么,也不懂怎么申请,想下个软件都下不了... 微信直播王者荣耀有收益吗 王者荣耀新手主播能挣多少 华为是如何进入手机市场的? ...用的那种安在船边上承鱼竿的那个座子中文叫什么?就是下图中的那个... 放在哪里不动钓鱼的叫什么? 求职英文翻译:我努力工作, 玉米大小苗是什么原因造成的?该如何补救呢? 玉米出现大小苗,是什么原因导致的? 英文求职E-mail帮忙翻译 博美狗多少钱一只? 求职驿站英文翻译是什么啊? 玉米苗根部打叉怎么办?玉米长叉的原因是什么呢? 求职招聘信息发布平台的英文翻译 怎样养博美狗? 求职网 用英文翻译应该是什么? 谢谢 玉米苗的顶部断了是怎么回事?还有存活的可能吗? 下图是玉米幼苗的生长过程示意图和细胞结构示意图,请据图回答问题: (1)与玉米根尖成熟区 子母的详细解释 对勾是什么牌子 电脑开机显示器无任何反应(独显集显均无反应 电脑能开机,,显示器没反应 电脑开机屏幕没反应。集成显卡的!怎么处理 所谓网赚是否合理? 方舟,生存上如何让没有受精的龙蛋孵化? 方舟手游野外界的背龙蛋怎么孵化? 最小堆的删除堆顶后如何调整 删除在堆中的对象 扳倒井金好客42度多少钱一瓶? c++ stl中堆操作如何删除元素。 怎样从堆中删除最小元素 pascal c语言 数组存储最小堆 删除堆顶元素 从堆中删除一个元素的时间复杂度是多少?麻烦解释一下 对于如下图所示的最大堆,删除掉最大的元素后,堆的后序遍历结果是 用堆分配存储方式实现串删除 为什么使用new创建一个堆对象后又要用delete删除 数据结构:小根堆删除最小元素的用时为什么是O(logN)呢?是如何算出来的呢?:) delete删除堆变量出错问题 如何更快的删除一大堆图片?用最最迅速的方法!! 宴请宾客喝什么白酒的比较多? &quot;已经习惯不去阻止你,过好一阵子你就会回来....&quot;这是周杰伦的什么歌? 变成了空气周杰伦什么歌 周杰伦那首,印象中的爱情好像顶不住那时间,这歌名叫什么? 周杰伦的1首歌的歌词有一句是”为什么会这样子”这首歌歌名是什么? 谁知道“怎么能这样子,你拉着我说你已经决定····”是那首歌的歌词??? 基金需要经常买卖吗