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安全技术之 实现php基本安全
Sep 04 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
php 定义404页面的实现代码
Nov 19 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
Apr 02 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 09 PHP
PHP数组实际占用内存大小原理解析
Dec 11 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类的使用 实例代码讲解
2009/12/28 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
地理教师岗位职责
2014/03/16 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
采购内勤岗位职责
2015/04/13 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
win sever 2022如何占用操作主机角色
2022/06/25 Servers