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 zlib压缩和解压缩swf文件的代码
Dec 30 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
PHP中is_file()函数使用指南
May 08 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
Yii全局函数用法示例
Jan 22 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 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
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
做网页的一些技巧
2007/02/01 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
javascript 面向对象继承
2009/11/26 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
js数组的操作详解
2013/03/27 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
python实现自主查询实时天气
2018/06/22 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
详细分析Python垃圾回收机制
2020/07/01 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
化工专业推荐信范文
2013/11/28 职场文书
领导干部保密承诺书
2014/08/30 职场文书
房产分割协议书范文
2014/11/21 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
python xlwt模块的使用解析
2021/04/13 Python
Python中else的三种使用场景
2021/06/16 Python
MySQL 十大常用字符串函数详解
2021/06/30 MySQL