Maison > développement back-end > tutoriel php > PHP implémente un algorithme de tri par fusion (exemple de code)

PHP implémente un algorithme de tri par fusion (exemple de code)

藏色散人
Libérer: 2023-04-05 15:42:01
original
3864 Les gens l'ont consulté

Le tri par fusion (également appelé tri par fusion) est un algorithme de tri basé sur la comparaison O (n log n). La plupart des implémentations produisent un tri stable, ce qui signifie que l'implémentation préserve l'ordre d'entrée des éléments égaux dans la sortie triée.

PHP implémente un algorithme de tri par fusion (exemple de code)

Nous allons maintenant vous présenter comment utiliser PHP pour implémenter l'algorithme de tri par fusion.

L'exemple de code PHP est le suivant :

<?php
function merge_sort($my_array){
    if(count($my_array) == 1 ) return $my_array;
    $mid = count($my_array) / 2;
    $left = array_slice($my_array, 0, $mid);
    $right = array_slice($my_array, $mid);
    $left = merge_sort($left);
    $right = merge_sort($right);
    return merge($left, $right);
}
function merge($left, $right){
    $res = array();
    while (count($left) > 0 && count($right) > 0){
        if($left[0] > $right[0]){
            $res[] = $right[0];
            $right = array_slice($right , 1);
        }else{
            $res[] = $left[0];
            $left = array_slice($left, 1);
        }
    }
    while (count($left) > 0){
        $res[] = $left[0];
        $left = array_slice($left, 1);
    }
    while (count($right) > 0){
        $res[] = $right[0];
        $right = array_slice($right, 1);
    }
    return $res;
}
$test_array = array(100, 54, 7, 2, 5, 4, 1);
echo "原始数组 : ";
echo implode(&#39;, &#39;,$test_array );
echo "\n排序后数组:";
echo implode(&#39;, &#39;,merge_sort($test_array))."\n";
Copier après la connexion

Sortie :

原始数组 : 100, 54, 7, 2, 5, 4, 1 
排序后数组:1, 2, 4, 5, 7, 54, 100
Copier après la connexion

Introduction à la fonction associée :

array_slice() La fonction extrait une valeur du tableau en fonction d'une condition et la renvoie.

array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = FALSE ]] ) : array
Copier après la connexion

array_slice() renvoie une séquence dans le tableau array spécifié par les paramètres offset et length. La fonction

implode() convertit la valeur d'un tableau unidimensionnel en chaîne.

Recommandations associées : "Tutoriel PHP"

Cet article est une introduction à la méthode d'implémentation de l'algorithme de tri par fusion en PHP. 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!

Étiquettes associées:
Déclaration de ce site Web
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
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal