【堆】这是要搞事情啊——建立
来源:互联网 发布:美国大数据公司 年薪 编辑:程序博客网 时间:2024/06/06 16:43
interesting!堆:简单的说就是一棵完全二叉树的先序,满足任意父结点大于子结点的叫大根堆,反之则是小根堆。
建立
建立(小根堆)算法(简单粗略加通俗):
循环以下步骤
把此数(a[i])“塞”到堆尾,然后不停的和它父结点(a[i/2])比较,小就换。
给一个硬模拟的代码:
void put(int k){int now,next;//now子结点,next父结点heap[len++]=k;now=len-1;while(now>1){next=now/2;if(heap[now]>=heap[next])//只要符合小根堆的条件了就breakbreak;swap(heap[now],heap[next]);//否则就交换now=next;}}
其实不难懂,但是像我们这种懒癌党怎么会愿意打呢
以下是直接用STL库函数的代码,两行解决(需添加algorithm、iostream及using namespace std头文件):
void put(int k){heap[len++]=k;//push_heap(heap,heap+len);push_heap(heap,heap+len,greater<int>());}
好吧。似乎并没有什么用……
其他堆的东西继续写,也在这个分类,后面会有例子的,
0 0
- 【堆】这是要搞事情啊——建立
- 【堆】这是要搞事情啊——取出
- 建立最大堆—数组—Java
- 树的应用——最大堆的建立
- 堆建立及堆排序
- 堆的建立&堆排序
- 最大堆的建立
- 最小堆的建立
- 堆的建立
- 最小堆怎么建立
- 最小堆建立
- 堆(Heap)的建立
- 大小堆的建立
- 最小堆的建立
- 二叉堆的建立
- 建立最大堆
- priority_queue 建立最小堆
- 【数据结构】堆的建立
- 抽象工厂模式范例A
- CyclicBarrier 栅栏
- 利用 OpenCV 在MFC中显示图像问题以及解决方法
- UVA 10891 Game of Sum(区间博弈dp)***
- 【原创】堆排序+合并果子+优先队列
- 【堆】这是要搞事情啊——建立
- <堆> 大根堆和小根堆的建立
- 找不到系统文件C:\ProgramData\Oracle\Java\javapath\java.exe
- [Underfail][CodeForces.717.G][费用流]
- poj1321棋盘问题
- 【Maven实战】04 坐标
- HDU 1300 Pearls DP .
- 数据类型
- Webbech学习之getopt_long函数