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 相关文章推荐
图形数字验证代码
Oct 09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
php防攻击代码升级版
Dec 29 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
Yii中表单用法实例详解
Jan 05 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
MySQL适配器PyMySQL详解
2017/09/20 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python实现简单多人聊天室
2018/12/11 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
python多线程同步之文件读写控制
2021/02/25 Python
Python列表如何更新值
2020/05/27 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
一套SQL笔试题
2016/08/14 面试题
纠风工作实施方案
2014/03/15 职场文书
欢迎家长标语
2014/10/08 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
红白喜事主持词
2015/07/06 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书