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 已经成熟
Dec 04 PHP
利用PHP制作简单的内容采集器的代码
Nov 28 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
WordPress网站性能优化指南
Nov 18 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
phpmailer绑定邮箱的实现方法
Dec 01 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php 图片上添加透明度渐变的效果
2009/06/29 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
为你总结一些php系统类函数
2015/10/21 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
vue-cli 关闭热更新操作
2020/09/18 Javascript
Python中使用SAX解析xml实例
2014/11/21 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
浅谈Python 参数与变量
2020/06/20 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
详解python中的异常和文件读写
2021/01/03 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
婚前保证书
2014/04/29 职场文书
员工安全承诺书
2014/05/22 职场文书
2016年父亲节寄语
2015/12/04 职场文书
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技