Heim >Backend-Entwicklung >PHP-Problem >Wie implementiert man eine Array-Rotation in PHP? Einführung in verschiedene Methoden

Wie implementiert man eine Array-Rotation in PHP? Einführung in verschiedene Methoden

PHPz
PHPzOriginal
2023-04-19 10:06:44605Durchsuche

PHP bietet viele Array-Operationsfunktionen, darunter die Rotationsoperation des Arrays. Unter Array-Rotation versteht man den Vorgang der Transformation der Positionen von Array-Elementen nach festen Regeln, sodass die ursprünglich zusammen angeordneten Elemente nach der Anordnung an verschiedenen Positionen verteilt werden. Die Array-Rotation kann in vielen Szenarien verwendet werden, z. B. zum zufälligen Mischen der Reihenfolge von Array-Elementen, zum Implementieren von Abfragen, zum Teilen von Arrays usw.

PHP bietet verschiedene Möglichkeiten zur Implementierung der Array-Rotation. Hier sind drei häufig verwendete Methoden.

1. Verwenden Sie die Funktion array_splice

Die Funktion array_splice kann verwendet werden, um ein Unterarray einer bestimmten Länge aus einem Array zu entfernen. Wir können das Array drehen, indem wir diese Funktion mehrmals aufrufen. Erwägen Sie, das Array $a$ um $k$ Bits nach rechts zu drehen, was mit den folgenden Ideen erreicht werden kann:

  1. Nehmen Sie die letzten $k$ Elemente des Arrays $a$ heraus, um ein Unterarray $P$ zu bilden
  2. Löschen Sie das Array $a. Die letzten $k$ Elemente von $ werden erhalten, um das neue Array $a'$ zu erhalten.
  3. Fügen Sie das Unterarray $P$ an der Anfangsposition des neuen Arrays $a'$ ein, um ein neues zu bilden Array $a''$.

Der Code ist wie folgt implementiert:

function rotateArray1($arr, $k) {
    $n = count($arr);
    $k = $k % $n; // 取模,防止$k > $n的情况
   
    $p = array_splice($arr, $n - $k, $k);
    $arr = array_merge($p, $arr);
    return $arr;
}

2. Verwenden Sie die Funktionen array_shift und array_push.

Die Funktion array_shift kann das erste Element des Arrays herausnehmen und zurückgeben, während die Funktion array_push Elemente am Ende des Arrays hinzufügen kann . Wir können das Array drehen, indem wir diese beiden Funktionen in einer Schleife aufrufen. Es ist zu beachten, dass diese Methode zwar machbar ist, die zeitliche Komplexität jedoch hoch ist, da jeder Aufruf von array_shift erfordert, dass das gesamte Array um ein Bit vorwärts verschoben wird. Wenn also $k$ relativ groß ist, ist die Effizienz sehr gering.

Der Code ist wie folgt implementiert:

function rotateArray2($arr, $k) {
    $k = $k % count($arr); //防止$k > count($arr)的情况
    for ($i = 0; $i < $k; $i++) {
        $elem = array_shift($arr); // 取出第一个元素
        array_push($arr, $elem);  // 将元素放入数组末尾
    }
    return $arr;
}

3. Verwenden Sie Array-Indizes, um eine Rotation zu erreichen.

Zusätzlich zur Verwendung von Array-Operationsfunktionen können wir die Array-Rotation auch durch manuelles Bedienen von Array-Indizes implementieren. Die konkrete Operation ist: Setzen Sie das Element mit dem Index $i$ an die Position mit dem Index $(i+k)%n$, wobei $n$ die Länge des Arrays und $k$ die Anzahl der Stellen für die Rechtsdrehung ist . Dieser Vorgang muss $n$ Mal in einer Schleife ausgeführt werden.

Der Code ist wie folgt implementiert:

function rotateArray3($arr, $k) {
    $n = count($arr);
    $k = $k % $n;
    for ($i = 0; $i < $n; $i++) {
        $newIndex = ($i + $k) % $n;
        $newArr[$newIndex] = $arr[$i];
    }
    return $newArr;
}

Die oben genannten drei Methoden können alle die Array-Rotationsoperation implementieren. Die spezifische verwendete Methode hängt vom erforderlichen Szenario und Datenumfang ab. Es ist zu beachten, dass bei der tatsächlichen Verwendung auch Faktoren wie die Art und Größe des Arrays berücksichtigt werden müssen, um verschiedene abnormale Situationen zu vermeiden, die zu Programmfehlern führen können.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Array-Rotation in PHP? Einführung in verschiedene Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn