justblackbird/stable-priority-queue

Stable implementation of priority queue

0.1.0 2020-08-22 11:49 UTC

This package is auto-updated.

Last update: 2024-04-22 20:24:16 UTC


README

Latest Stable Version Test

Stable implementation of priority queue data structure in PHP.

Why

There is an implementation of priority queue in SPL: SplPriorityQueue. The problem is it is unstable. Take a look at the example below:

$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() . " ";
}

This example retrieves a string "1 4 3 2" and not "1 2 3 4". This library provides an implementation that extracts values of the same priorites in the order they came in. The example above will return "1 2 3 4"!

Installation

composer require justblackbird/stable-priority-queue

Usage

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.

License

MIT (c) Dmitry Simushev