PHP 8.5.0 Alpha 2 available for testing

La clase SplMinHeap

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Introducción

La clase SplMinHeap proporciona la funcionalidad principal de un montículo, manteniendo el mínimo en la parte superior.

Sinopsis de la Clase

class SplMinHeap extends SplHeap {
/* Métodos */
protected compare(mixed $value1, mixed $value2): int
/* Métodos heredados */
protected SplHeap::compare(mixed $value1, mixed $value2): int
public SplHeap::insert(mixed $value): true
public SplHeap::key(): int
}

Tabla de contenidos

  • SplMinHeap::compare — Comparar elementos con el fin de colocarlos correctamente en el montón em la parte de arriba
add a note

User Contributed Notes 2 notes

up
3
gom
5 years ago
I experimented what happens when arrays are inserted:

<?php
$heap
= new SplMinHeap();
$heap->insert([22,333]);
$heap->insert([2,33]);
$heap->insert([222,3]);

var_export($heap->extract());
echo
'<br>';
var_export($heap->extract());
echo
'<br>';
var_export($heap->extract());
?>

Output:

array ( 0 => 2, 1 => 33, )
array ( 0 => 22, 1 => 333, )
array ( 0 => 222, 1 => 3, )
up
0
andy at nospam dot airslash dot net
10 days ago
To expand on gom's comment, SplMinHeap will also take into account the subsequent elements of the array you inserted, if the elements before that are equal.

<?php
$heap
= new SplMinHeap();
$heap->insert([0, 10]);
$heap->insert([0, 30]);
$heap->insert([0, 15]);
while (!
$heap->isEmpty()) {
[
$a, $b] = $heap->extract();
echo
"a:$a, b:$b\n";
}
echo
"---\n";
$heap->insert([0, 10, 100]);
$heap->insert([0, 10, 300]);
$heap->insert([0, 10, 150]);
while (!
$heap->isEmpty()) {
[
$a, $b, $c] = $heap->extract();
echo
"a:$a, b:$b, c:$c\n";
}
?>

will output:

a:0, b:10
a:0, b:15
a:0, b:30
---
a:0, b:10, c:100
a:0, b:10, c:150
a:0, b:10, c:300
To Top