justblackbird/stable-priority-queue

优先队列的稳定实现

0.1.0 2020-08-22 11:49 UTC

This package is auto-updated.

Last update: 2024-09-22 21:13:39 UTC


README

Latest Stable Version Test

PHP 中优先队列数据结构的稳定实现。

为什么

SPL 中已经有一个优先队列的实现: SplPriorityQueue。问题是它是不稳定的。看看下面的例子

$q = new \SplPriorityQueue();

$q->insert(1, 0);
$q->insert(2, 0);
$q->insert(3, 0);
$q->insert(4, 0);

while (!$q->isEmpty()) {
    echo $q->extract() . " ";
}

这个例子检索字符串 "1 4 3 2" 而不是 "1 2 3 4"。这个库提供了一个实现,它按照它们出现的顺序提取相同优先级的值。上面的例子将返回 "1 2 3 4"

安装

composer require justblackbird/stable-priority-queue

用法

use JustBlackBird\StablePriorityQueue\Queue;

$q = new Queue();

$q->insert(1, 0);
$q->insert(2, 0);
$q->insert(3, 0);
$q->insert(4, 0);

while (!$q->isEmpty()) {
    echo $q->extract() . " ";
}

// "1 2 3 4" will be outputted.

许可证

MIT (c) Dmitry Simushev