关于大根堆 (模板)

嗯...

 

大根堆这个东西吧,可以看成是一个优先队列(priority_queue)...

 

为什么要用堆这个东西??

 

功能强大,可排序,并且能对更大值进行操作

 

但是比队列慢!!

 

注意       若A的功能大于B的功能,那么A的速度一定比B的速度慢

 

上代码!!!

 1  #include<cstdio>
 2  #include<queue>
 3  //堆引用库:<queue> 
 4  using namespace std;
 5  
 6  priority_queue<int> heap;
 7  //堆英文名为heap,堆其实就是一种优先队列,这一语句是对堆的定义 
 8  
 9  int main()
10  {
11      heap.push(23);//进堆
12      heap.push(32);
13      heap.push(233);
14      heap.size();//堆的大小
15      heap.pop();//pop对最大值操作 
16      heap.top();//top对最大值操作 
17      return 0;
18  }
19  //此为大根堆 
 

前面说过堆比队列要慢,下面来看一下堆中操作的复杂度:

push        复杂度 O(logn)
size          复杂度 O(1)
pop          复杂度 O(logn)
top        复杂度 O(1)

 

嗯...相信很多人还知道有小根堆(废话)

 

关于小根堆  以后博客中会更新的

猜你喜欢

转载自www.cnblogs.com/New-ljx/p/10341565.html
今日推荐