使用 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 来实现。

总结

在本章中,我们了解了另一种高效数据结构—​堆。当我们使用堆实现优先级队列时,它们被认为是最高效率的实现。我们还学习了另一种高效排序方法—​堆排序,它可以通过堆数据结构来实现。至此,我们将结束本书有关数据结构的讨论。在接下来的章节中,我们将重点讨论高级算法、算法的内置函数、数据结构以及最后的函数式数据结构。首先,我们将在下一章探索动态编程的世界。