Maison  >  Article  >  développement back-end  >  Comment implémenter un algorithme de tri en php

Comment implémenter un algorithme de tri en php

coldplay.xixi
coldplay.xixioriginal
2020-10-06 10:33:065488parcourir

Comment implémenter l'algorithme de tri en PHP : 1. Tri par bulles, comparaison deux par deux, il n'est pas nécessaire de comparer le dernier élément de chaque cycle 2. Tri par sélection, sélectionnez-en un comme valeur de base, et le reste Comparez-le avec celui-ci, puis changez la position.

Comment implémenter un algorithme de tri en php

Comment implémenter un algorithme de tri en PHP :

Tri à bulles :

En comparant deux à deux, il n'est pas nécessaire de comparer le dernier élément de chaque cycle, car le dernier élément est déjà le plus grand ou le plus petit.

function maopaoSort ($list)
{
    $len = count($list);
    for ($i = 0; $i < $len - 1; $i++) {
        for ($j = 0; $j < $len - $i - 1; $j++) {
            if ($list[$j] > $list[$j + 1]) {
                $tmp = $list[$j];
                $list[$j] = $list[$j + 1];
                $list[$j + 1] = $tmp;
            }
        }
    }
    return $list;
}

2. Tri par sélection :

Sélectionnez-en une comme valeur de base, comparez le reste avec celle-ci, puis échangez les positions.

function xuanzeSort ($list)
{
    $len = count($list);
    for ($i = 0; $i < $len - 1; $i++) {
        $pos = $i;
        for ($j = $i + 1; $j < $len; $j++) {
            if ($list[$pos] > $list[$j]) {
                $pos = $j;
            }
        }
        if ($pos != $i) {
            $tmp = $list[$pos];
            $list[$pos] = $list[$i];
            $list[$i] = $tmp;
        }
    }
    return $list;
}

3. Tri rapide :

Le principe est de sortir une valeur de règle, puis de la diviser en deux tableaux à gauche et à droite, et de les comparer respectivement.

function kuaisuSort ($list)
{
    $len = count($list);
    if ($len <= 1) {//递归出口
        return $list;
    }
    $base = $list[0];//选择一个比较值
    $leftList = $rightList = [];
    for ($i = 1; $i < $len; $i++) {
        if ($base > $list[$i]) {
            $leftList[] = $list[$i];
        } else {
            $rightList[] = $list[$i];
        }
    }
    //递归分别再处理左右两边的数组
    $leftList = kuaisuSort($leftList);
    $rightList = kuaisuSort($rightList);
    return array_merge($leftList, [$base], $rightList);
}

4. Tri par insertion :

Supposons que les numéros précédents sont tous dans l'ordre et que le nième numéro doit être inséré dans l'ordre

function charuSort ($list)
{
    $len = count($list);
    for ($i = 1; $i < $len; $i++) {
        $tmp = $list[$i];//获取对比元素
        for ($j = $i - 1; $j > 0; $j--) {
            if ($list[$j] > $tmp) {
                $list[$j + 1] = $list[$j];
                $list[$j] = $tmp;
            } else {
                break;
            }
        }
    }
    return $list;
}

Apprentissage connexe Recommandé : programmation php (vidéo)

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