PHP SPL标准库之数据结构堆(SplHeap)简单使用实例


Posted in PHP onMay 12, 2015

堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。
如下:最小堆(任意节点的优先级不小于它的子节点)

PHP SPL标准库之数据结构堆(SplHeap)简单使用实例

看看PHP SplHeap的实现:

PHP SPL标准库之数据结构堆(SplHeap)简单使用实例

显然它是一个抽象类,最大堆(SplMaxHeap)和最小堆(SplMinHeap)就是继承它实现的。最大堆和最小堆并没有额外的方法
SplHeap的简单使用如下:

class MySimpleHeap extends SplHeap
{
  //compare()方法用来比较两个元素的大小,绝对他们在堆中的位置
  public function compare( $value1, $value2 ) {
    return ( $value1 - $value2 );
  }
}
 
$obj = new MySimpleHeap();
$obj->insert( 4 );
$obj->insert( 8 );
$obj->insert( 1 );
$obj->insert( 0 );
 
echo $obj->top(); //8
echo $obj->count(); //4
 
foreach( $obj as $number ) {
 echo $number;
}
PHP 相关文章推荐
PHP小程序自动提交到自助友情连接
Nov 24 PHP
PHP strtotime函数详解
Dec 18 PHP
PHP 编写大型网站问题集
May 07 PHP
基于PHP对XML的操作详解
Jun 07 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
php封装的page分页类完整实例
Oct 18 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
php对数组内元素进行随机调换的方法
May 12 #PHP
PHP SplObjectStorage使用实例
May 12 #PHP
PHP中预定义的6种接口介绍
May 12 #PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 #PHP
PHP 反射(Reflection)使用实例
May 12 #PHP
PHP Reflection API详解
May 12 #PHP
php通过curl模拟登陆DZ论坛
May 11 #PHP
You might like
PHP采集腾讯微博的实现代码
2012/01/19 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Python实现像awk一样分割字符串
2020/09/15 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
工作表现自我评价
2014/02/08 职场文书
听课评语大全
2014/04/30 职场文书
自主招生教师推荐信
2014/05/10 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA