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 相关文章推荐
支持oicq头像的留言簿(二)
Oct 09 PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
destoon常用的安全设置概述
Jun 21 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
Laravel 实现密码重置功能
Feb 23 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 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
如何给phpadmin一个保护
2006/10/09 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
django rest framework 过滤时间操作
2020/07/12 Python
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
原告离婚代理词
2015/05/23 职场文书
工作简历的自我评价
2019/05/16 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
OpenCV实现普通阈值
2021/11/17 Java/Android