java中的优先队列-二叉堆

java中的优先队列-二叉堆

https://blog.csdn.net/yjw123456/article/details/89483897
java中的优先队列-二叉堆

什么是堆?

优先队列:(Priority Queue):特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。

java中的优先队列-二叉堆
java中的优先队列-二叉堆
java中的优先队列-二叉堆
java中的优先队列-二叉堆
java中的优先队列-二叉堆

最大堆的插入

java中的优先队列-二叉堆
要跟父节点去调整,要调整到你插进去之后仍然是有序的
java中的优先队列-二叉堆
java中的优先队列-二叉堆
i表示要放的位置,父节点就是i/2的位置,i=i/2
java中的优先队列-二叉堆
如果我们要插入的一个数是最大的,一般情况下,还要加一个条件,如果i>1的时候才开始
java中的优先队列-二叉堆
因为我们在0这里放了一个最大的值
java中的优先队列-二叉堆

最大堆的删除

java中的优先队列-二叉堆
java中的优先队列-二叉堆