Maison  >  Article  >  développement back-end  >  Exemple de code pour l'implémentation php du tri par sélection

Exemple de code pour l'implémentation php du tri par sélection

不言
不言avant
2019-01-26 10:30:483262parcourir

Ce que cet article vous apporte est un exemple de code pour implémenter le tri par sélection en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Tri par sélection

Le tri par sélection est un algorithme de tri simple et intuitif. Voici comment cela fonctionne. Tout d'abord, recherchez le plus petit (grand) élément de la séquence non triée et stockez-le au début de la séquence triée. Ensuite, continuez à rechercher le plus petit (grand) élément parmi les éléments non triés restants, puis placez-le à la fin de la séquence. séquence triée. Et ainsi de suite jusqu'à ce que tous les éléments soient triés.

Le principal avantage du tri par sélection concerne le mouvement des données. Si un élément est dans la bonne position finale, il ne sera pas déplacé. Chaque fois que le tri par sélection échange une paire d'éléments, au moins l'un d'entre eux sera déplacé vers sa position finale, donc le tri d'une liste de n éléments nécessite au plus n -1 échanges au total. Parmi toutes les méthodes de tri qui reposent entièrement sur l'échange pour déplacer des éléments, le tri par sélection est une très bonne méthode

Introduit dans Wikipédia. Le tri à bulles et le tri rapide introduits dans les deux premiers articles sont tous deux des méthodes de tri qui reposent entièrement sur l'échange pour déplacer les éléments.

Démonstration d'animation

Exemple de code pour limplémentation php du tri par sélection

Exemple de code pour limplémentation php du tri par sélection

Exemple

<?php $arr = [33, 24, 8, 21, 2, 23, 3, 32, 16];

function selectSort($arr)
{
    $count = count($arr);

    if ($count < 2) {
        return $arr;
    }

    for ($i = 0; $i < $count - 1; $i++) {
        // 当前值的位置
        $key = $i;
        for ($k = $i + 1; $k < $count; $k++) {
            // 相邻值进行比较,条件成立替换当前值
            // 倒序 $arr[$key] < $arr[$k]
            if ($arr[$key] > $arr[$k]) {
                $key = $k;
            }
        }

        if ($key != $i) {
            // 交换位置
            $temp = $arr[$key];
            $arr[$key] = $arr[$i];
            $arr[$i] = $temp;
        }
    }

    return $arr;
}

print_r(selectSort($arr));
// Array ( [0] => 2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer