4.25 Alle Permutationen eines Arrays finden

Problem

Sie haben ein Array mit Elementen und möchten alle Möglichkeiten berechnen, wie diese unterschiedlich angeordnet werden können.

Lösung

Verwenden Sie einen der beiden Permutationsalgorithmen, die im Folgenden behandelt werden.

Diskussion

Die in Listing 4.6 dargestellte Funktion pc_permute() ist die PHP-Modifikation einer grundlegenden rekursiven Funktion.

function pc_permute($items, $perms = array()) {
    if (empty($items)) {
        print join(' ', $perms) . "\n";
    }  else {
        for ($i = count($items) - 1; $i >= 0; --$i) {
             $newitems = $items;
             $newperms = $perms;
             list($foo) = array_splice($newitems, $i, 1);
             array_unshift($newperms, $foo);
             pc_permute($newitems, $newperms);
         }
    }
}

Listing 4.6 pc_permute()

Ein Beispiel: ...

Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.