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 相关文章推荐
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 PHP
PHP与Perl之间知识点区别整理
Mar 19 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
vue组件的写法汇总
2018/04/12 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
使用Python生成XML的方法实例
2017/03/21 Python
python中模块查找的原理与方法详解
2017/08/11 Python
python select.select模块通信全过程解析
2017/09/20 Python
python怎么对数字进行过滤
2020/07/05 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
3分钟演讲稿
2014/04/30 职场文书
企业理念标语
2014/06/09 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
Python字典的基础操作
2021/11/01 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python