使用 SplHeap、SplMaxHeap 和 SplMinHeap
如果我们不想实现自己的堆实现,可以使用标准 PHP 库(SPL)中的内置堆类。SPL 有三种不同的堆实现。一个是通用堆,即 SplHeap
;另一个是最大堆,即 SplMaxHeap
;还有一个是最小堆,即 SplMinHeap
。重要的是要知道,SPL 类在 PHP 7 上运行时并不被认为具有很高的性能。因此我们不会在这里详细探讨它们。我们将只关注一个示例,这样如果我们使用的是 PHP 7 以外的其他版本,我们也可以使用这些内置类。让我们试试使用 SplMaxHeap
的示例:
Unresolved include directive in modules/ROOT/pages/ch10/ch10-07.adoc - include::example$Chapter10/4.php[]
由于我们使用了 max-heap,因此我们期望输出按降序排列。这是命令行的输出:
143 129 86 65 44 37 34 26 9
如果我们想以相反的方式对其进行排序,我们可以使用 SplMinHeap
来实现。