zoukankan      html  css  js  c++  java
  • 9.26

    第一,

    1,什么是堆? 总之,是一种特殊的数据结构,可以看作一种树形结构。

    对于他的右儿子,乘2加1,人家用了按位或“|”,意思是同为1,则为0,否则都是1.我测试了一下,还真能

    同时左移1位肯定就算是2倍了。

    对了了爸爸,左儿子,右儿子是个啥东西。

    2,堆。。。

    3,定义一个结构体,heap;

    里面先开一个很大的数组。(int)

    然后定义一个底部的变量,tot;

    4,然后看支持的操作

    top

    push,但是插入你得满足人家heap本来的性质哇,所以引入了modify操作,可以理解为辅助push操作的一个东西,内部就是一个递归函数,和它的父亲比较,大就上去,确实有点类似与冒泡。

    对了这个是从底部插入的。

    对了modify中加了一句,if(x==1),return;  我不懂。。

    pop,和上面的push同理,你弹出是弹出,但是heap为了满足自己的性质,必须做出修正,所以引出了repair,但是pop比push复杂一些。

    首先你得明白,pop是怎么操作的,我靠,这pop怎么把人家heap顶的值给弹走了。。所以你pop是把顶端值给弹没了?

    好吧,人家要弹heap顶的值,你得先把heap顶和heap最底端给交换,然后把底端给弹了w[--tot]...然后顶端就是一般是个很小的值,所以要传下去,然后就用到了repair函数,先定义一个tar看左右儿子哪个大,然后顶端和tar比较。。一般是小的,然后传下去,然后递归继续。。

    我觉得这三个是最基本的操作。。返回顶端值,插入操作,弹出操作。

    5,

    然后后面是个 heap h;

    这个语句才是用的。。?

    然后才int main

    也就是说你这个结构体是在 using namespace std和in main()之间的。

    6,怎么基本抄都不过去。

    7,

    样例过了,后面几个没过是因为你数组开的太小了!

  • 相关阅读:
    日钢信息自动化质保书打印系统应用实践《全国冶金自动化信息网2012年年会论文集》2012年
    MySQL :: MySQL 5.0 Reference Manual :: 20.1.4.5 Configuring a Connector/ODBC DSN on Unix
    Fast JavaScript Max/Min
    js javascript:void(0)
    dom querySelector
    php输出Json
    精通javascript:永不终止的blog
    javascript事件委托event delegation
    js+css Text Blocks Over Image(文字覆盖在图片上)
    一个javascript选项卡的进化史
  • 原文地址:https://www.cnblogs.com/beiyueya/p/11594856.html
Copyright © 2011-2022 走看看