优先队列-堆

来源:互联网 发布:mac 删除程序 编辑:程序博客网 时间:2024/06/03 09:19

优先队列:有些作业特别重要 程序一有空闲就执行这些操作
主要操作:insert deleteMin
二叉堆:

  • 结构性质:完全填满的二叉树、底层上的元素从左到右依次填入
  • 规律:很有规律 只用数组不需要使用链表:对于数组上位置i的元素 左儿子在2i上 右儿子在2i+1上 父亲在位置i/2上
  • 最小元素在根节点

操作:insert

void insert(const Comparable & x){    if (currentSize==array.size()-1)    array.resize(array.size()*2);    int  hole=++currentSize;    for( ; hole>1 && array[hole/2]>x;  hole/=2)        array[hole]=array[hole/2];        array[hole]=x;} 
0 0
原创粉丝点击