Algorithmen und Datenstrukturen in PHP: Ein praktischer Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Algorithmen und Datenstrukturen in PHP: In der Praxis

\n\n

In der Welt der Webentwicklung bleibt PHP eine der beliebtesten Sprachen. Viele Entwickler, die mit der Syntax vertraut sind, übersehen jedoch oft die grundlegenden Konzepte – Algorithmen und Datenstrukturen. Das Verständnis dieser Themen verbessert nicht nur die Codequalität, sondern macht Sie auch zu einem wettbewerbsfähigeren Kandidaten in Vorstellungsgesprächen. In diesem Artikel behandeln wir die wichtigsten Algorithmen und Datenstrukturen in PHP mit echten Codebeispielen, die Sie sofort in Ihren Projekten anwenden können.

\n\n

1. Grundlegende Datenstrukturen: Stack und Queue

\n\n

Stack und Queue sind lineare Datenstrukturen, die häufig in realen Anwendungen verwendet werden. Ein Stack arbeitet nach dem LIFO-Prinzip (Last In, First Out), eine Queue nach dem FIFO-Prinzip (First In, First Out). In PHP können sie mit integrierten Array-Funktionen implementiert werden.

\n\n

Implementierung eines Stacks

\n
<?php\nclass Stack {\n    private $stack = [];\n\n    public function push($item) {\n        array_push($this->stack, $item);\n    }\n\n    public function pop() {\n        if ($this->isEmpty()) {\n            return null;\n        }\n        return array_pop($this->stack);\n    }\n\n    public function peek() {\n        return end($this->stack);\n    }\n\n    public function isEmpty() {\n        return empty($this->stack);\n    }\n}\n\n// Beispiel zur Verwendung\n$stack = new Stack();\n$stack->push("Erster");\n$stack->push("Zweiter");\n$stack->push("Dritter");\necho $stack->pop(); // Dritter\necho $stack->peek(); // Zweiter\n?>
\n\n

Implementierung einer Queue

\n
<?php\nclass Queue {\n    private $queue = [];\n\n    public function enqueue($item) {\n        array_push($this->queue, $item);\n    }\n\n    public function dequeue() {\n        if ($this->isEmpty()) {\n            return null;\n        }\n        return array_shift($this->queue);\n    }\n\n    public function front() {\n        return reset($this->queue);\n    }\n\n    public function isEmpty() {\n        return empty($this->queue);\n    }\n}\n\n// Beispiel zur Verwendung\n$queue = new Queue();\n$queue->enqueue("Erster");\n$queue->enqueue("Zweiter");\n$queue->enqueue("Dritter");\necho $queue->dequeue(); // Erster\necho $queue->front();    // Zweiter\n?>
\n\n

Diese Datenstrukturen sind unverzichtbar bei der Implementierung von Puffern, Aktionsverläufen (undo/redo) und der Verarbeitung von Aufgaben in der Reihenfolge ihres Eintreffens.

\n\n

2. Sortieralgorithmen in PHP

\n\n

Sortieren ist eine der häufigsten Operationen in der Programmierung. Wir betrachten zwei klassische Implementierungen: Bubble Sort (zum Lernen) und Quick Sort (für die Praxis).

\n\n

Bubble Sort

\n
<?php\nfunction bubbleSort(&$arr) {\n    $n = count($arr);\n    for ($i = 0; $i < $n - 1; $i++) {\n        for ($j = 0; $j < $n - $i - 1; $j++) {\n            if ($arr[$j] > $arr[$j + 1]) {\n                // Werte tauschen\n                $temp = $arr[$j];\n                $arr[$j] = $arr[$j + 1];\n                $arr[$j + 1] = $temp;\n            }\n        }\n    }\n}\n\n$numbers = [64, 34, 25, 12, 22, 11, 90];\nbubbleSort($numbers);\nprint_r($numbers); // [11, 12, 22, 25, 34, 64, 90]\n?>
\n\n

Komplexität: O(n²) – nicht geeignet für große Arrays, aber hervorragend zur Veranschaulichung des Prinzips.

\n\n

Quick Sort

\n
<?php\nfunction quickSort($arr) {\n    if (count($arr) < 2) {\n        return $arr;\n    }\n\n    $pivot = $arr[0];\n    $left = $right = [];\n\n    for ($i = 1; $i < count($arr); $i++) {\n        if ($arr[$i] < $pivot) {\n            $left[] = $arr[$i];\n        } else {\n            $right[] = $arr[$i];\n        }\n    }\n\n    return array_merge(quickSort($left), [$pivot], quickSort($right));\n}\n\n$numbers = [3, 6, 8, 10, 1, 2, 1];\n$sorted = quickSort($numbers);\nprint_r($sorted); // [1, 1, 2, 3, 6, 8, 10]\n?>                

Blogs

Buchempfehlungen