Klasse PriorityQueue (als sortierte Liste)
Die Prioritätenliste ist hier der Einfachheit halber als sortierte Liste implementiert. Die Liste wird jeweils neu sortiert, bevor ein Element mit extract ausgegeben wird, nachdem vorher Elemente mit insert eingefügt worden sind. Im schlechtesten Fall benötigt extract daher Θ(n log(n)) Schritte, wobei n die Länge der Liste ist; insert benötigt O(1) Schritte.
Beim Aufruf des Konstruktors wird mit dem Parameter updown=1 oder updown=-1 festgelegt, ob mit extract das Paar mit dem höchsten oder mit dem niedrigsten Zahlenwert zurückgegeben werden soll.
<?php
class PriorityQueue
{
private $a;
private $updown;
private $sorted;
public function PriorityQueue($updown=1)
{
$this->a=array();
$this->updown=$updown;
$this->sorted=true;
}
public function insert($p, $x=null)
{
$this->a[]=array($p, $x);
$this->sorted=false;
}
public function extract()
{
if (!$this->sorted)
{
if ($this->updown==1)
sort($this->a);
else
rsort($this->a);
$this->sorted=true;
}
return array_pop($this->a);
}
public function extractVal()
{
$z=$this->extract();
return $z[0];
}
public function extractObj()
{
$z=$this->extract();
return $z[1];
}
public function isEmpty()
{
return $this->size()==0;
}
public function size()
{
return count($this->a);
}
}
?>
[up]
H.W. Lang mail@hwlang.de Impressum Datenschutz
Created: 06.02.2009 Updated: 19.02.2023
Diese Webseiten sind während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden