[编程珠玑读书笔记]优先队列
来源:互联网 发布:百川软件 编辑:程序博客网 时间:2024/05/29 16:51
以前学数据结构的时候,学到后面一些抽象一点的数据结构,老师也不让我们写代码,也没有强调这些东西的重要性。再加上那时候不懂事,都没有具体去实现过堆,总认为这是很复杂的东西,其实学会以后真是简单的不得了,而且是又简单,又好用。
#include<iostream>#include<stdlib.h>#include<stdio.h>using namespace std;template<class T>class priqueue{private:int n,maxsize;T *x;void swap( int i, int j){T t = x[i]; x[i] = x[j]; x[j] = t;}public:priqueue( int m){maxsize = m;x = new T[maxsize + 1];n = 0;}void insert( T t){int i, p;x[++n] = t;//插入新元素到小根堆,将自己的值和父亲的值做比较for( i = n; i > 1 && x[ p = i / 2] > x[i]; i= p)swap( p, i);}T extractmin(){int i,c;//提取最小的元素,也就是第一个元素,再将最后一个元素放在第一个的位置,然后向下移动,保持小根堆T t = x[1];x[1] = x[ n-- ];for( i = 1; ( c = 2 * i ) <= n; i = c){if( c + 1 <= n && x[ c + 1 ] < x[c])c++;if( x[i] <= x[c] )break;swap( c, i);}return t;}};int main(){srand(5);int i;priqueue<int> queue( 20 );for( i = 0; i < 20; i++)queue.insert( rand() % 500 );for( i = 0; i < 20; i++)cout << queue.extractmin() << "\t";cout << endl;return 0;}
编程珠玑书本实例:
- [编程珠玑读书笔记]优先队列
- 优先队列 (堆的应用)- 编程珠玑
- 《编程珠玑》读书笔记
- 《编程珠玑》读书笔记2
- 《编程珠玑》 读书笔记
- 《编程珠玑》读书笔记开场白
- 《编程珠玑》第一章读书笔记
- 编程珠玑读书笔记
- 《编程珠玑》读书笔记 part1
- 《编程珠玑》读书笔记 part2
- 《编程珠玑》读书笔记 part3
- 编程珠玑 读书笔记
- 编程珠玑读书笔记
- 《编程珠玑》读书笔记第一章
- 第一章 开篇 - 编程珠玑 - 读书笔记
- [编程珠玑读书笔记] 插入排序
- [编程珠玑读书笔记]快速排序
- [编程珠玑读书笔记]抽样问题
- android实现从相册和相机中取照片并剪辑
- 数据拟合工具箱笔记
- linux虚拟机相关配置
- sed之n、h、x、N、G使用
- 如何在windows 下运行android 4.0 ICS CTS
- [编程珠玑读书笔记]优先队列
- android源码make时的错误
- 不使用资源文件动态创建对话框的做法
- Google App Engine技术架构资料大盘点
- busybox制作rootfs
- busybox使用
- yum install
- java实现全排列问题
- Android onTouchEvent, onClick及onLongClick的调用机制