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函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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/02 无线电
开发大型PHP项目的方法
2006/10/09 PHP
服务器端解压缩zip的脚本
2006/12/22 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
如何卸载python插件
2020/07/08 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
党员组织关系介绍信
2014/02/13 职场文书
教师党员承诺书
2014/03/25 职场文书
党员自我评价范文2015
2015/03/03 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript