尝试使用PHP堆

测试 PHP 堆栈。

最大堆

提供了SplMaxHeap类。
可以按降序取出。

        $values = [1,9,3,4,2,4,0];

        $maxHeap = new \SplMaxHeap();
        foreach ($values as $value) {
            $maxHeap->insert($value);
        }

        while($maxHeap->valid()) {
            $this->info($maxHeap->extract());
        }
9
4
4
3
2
1
0

最小堆

可以按照升序提取值。


        $values = [1,9,3,4,2,4,0];

        $maxHeap = new \SplMinHeap();
        foreach ($values as $value) {
            $maxHeap->insert($value);
        }

        while($maxHeap->valid()) {
            $this->info($maxHeap->extract());
        }
0
1
2
3
4
4
9