この記事では、PHP SPL標準ライブラリのデータ構造ヒープ(SplHeap)の簡単な使用例を中心に紹介しています。最大ヒープ (SplMaxHeap) 、最小ヒープ (SplMinHeap) の関連知識、それを必要とする友人はそれを参照できます
ヒープとは、プライオリティキューを実装するために設計されたデータ構造で、バイナリヒープ(バイナリツリーの一種)を構築することで実装されます。最大のルート ノードを持つヒープは最大ヒープまたは大ルート ヒープと呼ばれ、最小のルート ノードを持つヒープは最小ヒープまたは小ルート ヒープと呼ばれます。バイナリ ヒープは、ソート (ヒープ ソート) にもよく使用されます。
以下の通り: 最小ヒープ (どのノードの優先順位もその子ノード以上)
PHP SplHeap の実装を見てください:
当然抽象クラスであり、最大ヒープ(SplMaxHeap)と最小ヒープ(SplMinHeap)はそれを継承して実装されています。 max-heap と min-heap には追加のメソッドはありません
SplHeap の簡単な使用法は次のとおりです:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
クラス MySimpleHeap は SplHeap を拡張します { //compare() メソッドは、2 つの要素のサイズを比較し、ヒープ内での位置を決定するために使用されます パブリック関数 Compare( $value1, $value2 ) { return ( $value1 - $value2 ); } }
$obj = 新しい 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 ) { $number をエコー; } |