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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
Jul 12 PHP
php安全之直接用$获取值而不$_GET 字符转义
Jun 03 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
初识Laravel
Oct 30 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
php远程下载类分享
Apr 13 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
简述php环境搭建与配置
Dec 05 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 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设计模式 Delegation(委托模式)
2011/06/26 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python代码能做成软件吗
2020/07/24 Python
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
计算机专业职业生涯规划范文
2014/01/19 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
搞笑创意广告语
2014/03/17 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
检讨书格式范文
2015/05/07 职场文书
庆祝教师节主持词
2015/07/06 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
欧元符号 €
2022/02/17 杂记
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL
MySQL数据库之存储过程 procedure
2022/06/16 MySQL