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 相关文章推荐
分页显示Oracle数据库记录的类之一
Oct 09 PHP
一个可以找出源代码中所有中文的工具
Oct 25 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
php简单日历函数
Oct 28 PHP
PHP邮件群发机实现代码
Feb 16 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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高手?学会“懒惰”的编程
2006/12/05 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
PHP中使用BigMap实例
2015/03/30 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
haskell实现多线程服务器实例代码
2013/11/26 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
python监控nginx端口和进程状态
2019/09/06 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
心理健康教育制度
2014/01/27 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
人事主管岗位职责
2015/02/04 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python