堆
堆就是一棵二叉树,所以我感觉堆挺难的
今天先说大根堆吧,就是父一定要大于子,然后现在讲的就是用堆实现优先级队列
优先级队列,本质上就是找到那个优先级最高的让他出列嘛,然后就涉及到父与子的次序问题,然后有三个重要公式
先说说加法,这个直通大根堆的本质
就是加东西进去,然后先放在末尾,接着试着往上走,发现比自己弱的把它扯下来,自己当爹,第一行进去之后被赋值为child,然后公式算出它的1爹,接着开始跟爹比拼,第一步就是如果比爹强,那就换位置,接着就是涉及到一个指针问题你打败爹成为爹了之后,你下一次还是孩子,所以child赋值被parent,相当于指针child网上走了,指针往上走就可以(用公式)找到上面的爹,然后接着比
这个就是重头戏,下潜整理(为什么,后面的pop会用到),先放入一个“假爹”,让他下潜先用公式算出孩子在哪,max是一个指针,哪个孩子强于父亲,指针指向它