Maison > développement back-end > tutoriel php > Explication détaillée de plusieurs méthodes de tri courantes en php (avec code)

Explication détaillée de plusieurs méthodes de tri courantes en php (avec code)

烟雨青岚
Libérer: 2023-04-08 19:06:01
avant
4268 Les gens l'ont consulté

Explication détaillée de plusieurs méthodes de tri courantes en php (avec code)

Plusieurs méthodes de tri courantes en PHP

PHP dispose de nombreuses méthodes de tri : cet article vous présentera plusieurs méthodes de tri courantes : tri, tri par échange, tri par sélection, tri par insertion, tri rapide. J'espère que cela aide tout le monde.

Méthode de tri 1 : Tri à bulles

function BubbleSort($arr) {
    // 获得数组总长度
    $num = count($arr);
    // 正向遍历数组
    for ($i = 1; $i < $num; $i++) {
        // 反向遍历
        for ($j = $num - 1; $j >= $i ; $j--) {
            // 相邻两个数比较
            if ($arr[$j] < $arr[$j-1]) {
                // 暂存较小的数
                $iTemp = $arr[$j-1];
                // 把较大的放前面
                $arr[$j-1] = $arr[$j];
                // 较小的放后面
                $arr[$j] = $iTemp;
            }
        }
    }
    return $arr;
}
Copier après la connexion

Méthode de tri 2 : Tri par échange

function ExchangeSort($arr){
    $num = count($arr);
    // 遍历数组
    for ($i = 0;$i < $num - 1; $i++) {
        // 获得当前索引的下一个索引
        for ($j = $i + 1; $j < $num; $j++) {
            // 比较相邻两个的值大小
            if ($arr[$j] < $arr[$i]) {
                // 暂存较小的数
                $iTemp = $arr[$i];
                // 把较大的放前面
                $arr[$i] = $arr[$j];
                // 较小的放后面
                $arr[$j] = $iTemp;
            }
        }
    }
    return $arr;
}
Copier après la connexion

Méthode de tri 3 : Tri par sélection

function SelectSort($arr) {
    // 获得数组总长度
    $num = count($arr);
    // 遍历数组
    for ($i = 0;$i < $num-1; $i++) {
        // 暂存当前值
        $iTemp = $arr[$i];
        // 暂存当前位置
        $iPos = $i;
        // 遍历当前位置以后的数据
        for ($j = $i + 1;$j < $num; $j++){
            // 如果有小于当前值的
            if ($arr[$j] < $iTemp) {
                // 暂存最小值
                $iTemp = $arr[$j];
                // 暂存位置
                $iPos = $j;
            }
        }
        // 把当前值放到算好的位置
        $arr[$iPos] = $arr[$i];
        // 把当前值换成算好的值
        $arr[$i] = $iTemp;
    }
    return $arr;
}
Copier après la connexion

Méthode de tri 4 : Insertion sorting

function InsertSort($arr){
    $num = count($arr);
    // 遍历数组
    for ($i = 1;$i < $num; $i++) {
        // 获得当前值
        $iTemp = $arr[$i];
        // 获得当前值的前一个位置
        $iPos = $i - 1;
        // 如果当前值小于前一个值切未到数组开始位置
        while (($iPos >= 0) && ($iTemp < $arr[$iPos])) {
            // 把前一个的值往后放一位
            $arr[$iPos + 1] = $arr[$iPos];
            // 位置递减
            $iPos--;
        }
        $arr[$iPos+1] = $iTemp;
    }
    return $arr;
}
Copier après la connexion

Méthode de tri 5 : Tri rapide

function QuickSort($arr){
    $num = count($arr);
    $l = $r = 0;
    $left = $right = array();
    // 从索引的第二个开始遍历数组
    for ($i = 1;$i < $num; $i++) {
        // 如果值小于索引1
        if ($arr[$i] < $arr[0]) {
            // 装入左索引数组(小于索引1的数据)
            $left[] = $arr[$i];
            $l++;
        } else {
            // 否则装入右索引中(大于索引1的数据)
            $right[] = $arr[$i];
            $r++; //
        }       
    }
    // 如果左索引有值 则对左索引排序
    if($l > 1) {
        $left = QuickSort($left);
    }
    // 排序后的数组
    $new_arr = $left;
    // 将当前数组第一个放到最后
    $new_arr[] = $arr[0];
    // 如果又索引有值 则对右索引排序
    if ($r > 1) {
        $right = QuickSort($right);
    }
    // 根据右索引的长度再次增加数据
    for($i = 0;$i < $r; $i++) {
        $new_arr[] = $right[$i];
    }
    return $new_arr;
}
Copier après la connexion

Tutoriel recommandé : "Tutoriel vidéo PHP"

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:
source:liqingbo.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal