Maison  >  Article  >  développement back-end  >  Implémentation de l'algorithme de tri PHP Cocktail (exemple de code)

Implémentation de l'algorithme de tri PHP Cocktail (exemple de code)

藏色散人
藏色散人original
2019-03-08 10:14:292424parcourir

Le tri cocktail, également connu sous le nom de tri à bulles bidirectionnel, tri shaker, tri ondulé, tri aléatoire ou tri navette, est Une variante du tri à bulles , c'est à la fois un algorithme de tri stable et un tri par comparaison.

Implémentation de l'algorithme de tri PHP Cocktail (exemple de code)

Cet algorithme diffère du tri à bulles en ce sens qu'il trie dans les deux sens à chaque fois qu'il parcourt la liste. Cet algorithme de tri est en réalité plus difficile à mettre en œuvre que le tri à bulles et résout le problème des tortues dans le tri à bulles. Il n’apporte que des améliorations mineures des performances et n’améliore pas les performances asymptotiques comme les bulles ; bien qu’il soit utile dans l’éducation, il n’a aucune signification pratique.

Un exemple d'animation de visualisation de tri de cocktails est le suivant :

Implémentation de lalgorithme de tri PHP Cocktail (exemple de code)

Un exemple de code de tri de cocktails PHP est le suivant suit :

<?php
function cocktailSort($my_array)
{
    if (is_string($my_array))
        $my_array = str_split(preg_replace(&#39;/\s+/&#39;,&#39;&#39;,$my_array));

    do{
        $swapped = false;
        for($i=0;$i<count($my_array);$i++){
            if(isset($my_array[$i+1])){
                if($my_array[$i] > $my_array[$i+1]){
                    list($my_array[$i], $my_array[$i+1]) = array($my_array[$i+1], $my_array[$i]);
                    $swapped = true;
                }
            }
        }

        if ($swapped == false) break;

        $swapped = false;
        for($i=count($my_array)-1;$i>=0;$i--){
            if(isset($my_array[$i-1])){
                if($my_array[$i] < $my_array[$i-1]) {
                    list($my_array[$i],$my_array[$i-1]) = array($my_array[$i-1],$my_array[$i]);
                    $swapped = true;
                }
            }
        }
    }while($swapped);

    return $my_array;
}
$test_array = array(3, 0, 2, 5, -1, 4, 1);
echo "原始数组:\n";
echo implode(&#39;, &#39;,$test_array );
echo "\n排序后数组\n:";
echo implode(&#39;, &#39;,cocktailSort($test_array)). PHP_EOL;

Sortie :

原始数组: 3, 0, 2, 5, -1, 4, 1
排序后数组 :-1, 0, 1, 2, 3, 4, 5

Cet article concerne la méthode d'implémentation de l'algorithme de tri PHP cocktail (Cocktail). J'espère qu'il sera utile. aux amis dans le besoin !

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