Maison  >  Article  >  développement back-end  >  Comment implémenter la rotation des tableaux en php ? Introduction à diverses méthodes

Comment implémenter la rotation des tableaux en php ? Introduction à diverses méthodes

PHPz
PHPzoriginal
2023-04-19 10:06:44551parcourir

PHP fournit de nombreuses fonctions d'opération de tableau, dont l'une est l'opération de rotation du tableau. La rotation du tableau fait référence à l'opération de transformation des positions des éléments du tableau selon des règles fixes, de sorte que les éléments initialement disposés ensemble soient dispersés dans différentes positions après avoir été disposés. La rotation des tableaux peut être utilisée dans de nombreux scénarios, tels que le mélange aléatoire de l'ordre des éléments du tableau, la mise en œuvre d'une interrogation, la division des tableaux, etc.

PHP propose une variété de façons d'implémenter la rotation des tableaux. Voici trois méthodes couramment utilisées.

1. Utilisez la fonction array_splice

La fonction array_splice peut être utilisée pour supprimer un sous-tableau d'une longueur spécifiée d'un tableau. Nous pouvons faire pivoter le tableau en appelant cette fonction plusieurs fois. Pensez à faire pivoter le tableau $a$ vers la droite de $k$ bits, ce qui peut être réalisé selon les idées suivantes :

  1. Supprimez les derniers $k$ du tableau $a$ pour former un sous-tableau $P$ ;
  2. Supprimez le tableau $a Les derniers $k$ éléments de $ sont obtenus pour obtenir le nouveau tableau $a'$
  3. Insérez le sous-tableau $P$ dans la position de début du nouveau tableau $a'$ pour former un nouveau ; tableau $a''$.
Le code est implémenté comme suit :

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. Utilisez les fonctions array_shift et array_push

La fonction array_shift peut retirer et renvoyer le premier élément du tableau, tandis que la fonction array_push peut ajouter des éléments à la fin du tableau. . Nous pouvons faire pivoter le tableau en appelant ces deux fonctions dans une boucle. Il convient de noter que bien que cette méthode soit réalisable, la complexité temporelle est élevée, car chaque appel à array_shift nécessite que l'ensemble du tableau soit avancé d'un bit, donc lorsque $k$ est relativement grand, l'efficacité sera très faible.

Le code est implémenté comme suit :

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. Utilisez les indices de tableau pour réaliser la rotation

En plus d'utiliser les fonctions d'opération de tableau, nous pouvons également implémenter la rotation de tableau en exécutant manuellement les indices de tableau. L'opération spécifique est la suivante : placez l'élément avec l'indice $i$ dans la position avec l'indice $(i+k)%n$, où $n$ est la longueur du tableau et $k$ est le nombre de chiffres pour la rotation à droite. . Cette opération doit être exécutée en boucle $n$ fois.

Le code est implémenté comme suit :

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;
}
Les trois méthodes ci-dessus peuvent toutes implémenter l'opération de rotation du tableau. La méthode spécifique utilisée dépend du scénario et de l'échelle de données requise. Il convient de noter qu'en utilisation réelle, des facteurs tels que le type et la taille de la matrice doivent également être pris en compte pour éviter diverses situations anormales pouvant conduire à des erreurs de programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn