Home  >  Article  >  Backend Development  >  Simple example of PHP SPL data structure heap (SplHeap)

Simple example of PHP SPL data structure heap (SplHeap)

*文
*文Original
2017-12-27 09:52:111591browse

This article mainly introduces a simple usage example of the data structure heap (SplHeap) of the PHP SPL standard library. This article also explains the relevant knowledge of the maximum heap (SplMaxHeap) and the minimum heap (SplMinHeap). I hope to be helpful.

Heap is a data structure designed to implement priority queues. It is implemented by constructing a binary heap (a type of binary tree). The heap with the largest root node is called the maximum heap or large root heap, and the heap with the smallest root node is called the minimum heap or small root heap. Binary heaps are also commonly used for sorting (heap sort).
As follows: Minimum heap (the priority of any node is not less than its child node)

Look at the implementation of PHP SplHeap:

Obviously it is an abstract class, and the maximum heap (SplMaxHeap) and the minimum heap (SplMinHeap) are implemented by inheriting it. There are no additional methods for the maximum heap and the minimum heap.
The simple use of SplHeap is as follows:


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;
}

Related recommendations:

Usage of PHP SPL

The forgotten gem of PHP SPL_PHP tutorial

PHP SPL usage method and its power_PHP tutorial

The above is the detailed content of Simple example of PHP SPL data structure heap (SplHeap). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn