内容简介:堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。从上面可以看到由于类中包含一个
堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。
类摘要
abstract SplHeap implements Iterator , Countable { /* 方法 */ public __construct ( void ) abstract protected int compare ( mixed $value1 , mixed $value2 ) public int count ( void ) public mixed current ( void ) public mixed extract ( void ) public void insert ( mixed $value ) public bool isEmpty ( void ) public mixed key ( void ) public void next ( void ) public void recoverFromCorruption ( void ) public void rewind ( void ) public mixed top ( void ) public bool valid ( void ) }
从上面可以看到由于类中包含一个 compare
的抽象方法,所以该类必须为抽象类(不可实例化,只能被继承使用);
最小堆和最大堆其实就是对 compare
该抽象方法的一个算法的两种呈现; 也可以自己写一个类继承SplHeap按自己的方式来做排序;
Example
自定义 排序 堆
class MySimpleHeap extends SplHeap { //compare()方法用来比较两个元素的大小,决定他们在堆中的位置 public function compare( $value1, $value2 ) { return ($value2 - $value1); } } $obj = new MySimpleHeap(); $obj->insert( 4 ); $obj->insert( 8 ); $obj->insert( 1 ); $obj->insert( 0 ); echo $obj->top(); //8 foreach( $obj as $number ) { echo $number; echo PHP_EOL; }
最大堆与最小堆
$heap = new SplMaxHeap(); $heap->insert(100); $heap->insert(80); $heap->insert(88); $heap->insert(70); $heap->insert(810); $heap->insert(800); //最大堆,从大到小排序 $heap->rewind(); while($heap->valid()){ echo $heap->key(),'=>',$heap->current(),PHP_EOL; $heap->next(); }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【SPL标准库专题(2)】Iterator
- 【SPL标准库专题(4)】Exceptions
- 【SPL标准库专题(1)】SPL简介
- React专题:可变状态
- React专题:生命周期
- React专题:组件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机网络(第6版)
[美] James F.Kurose、[美] Keith W.Ross / 陈鸣 / 机械工业出版社 / 2014-10 / 79.00元
《计算机网络:自顶向下方法(原书第6版)》第1版于12年前出版,首创采用自顶向下的方法讲解计算机网络的原理和协议,出版以来已被几百所大学和学院选用,是业界最经典的计算机网络教材之一。 《计算机网络:自顶向下方法(原书第6版)》第6版继续保持了以前版本的特色,为计算机网络教学提供了一种新颖和与时俱进的方法,同时也进行了相当多的修订和更新:第1章更多地关注时下,更新了接入网的论述;第2章用pyt......一起来看看 《计算机网络(第6版)》 这本书的介绍吧!