Maison  >  Article  >  programmation quotidienne  >  Analyse détaillée de l'algorithme de tri par sélection

Analyse détaillée de l'algorithme de tri par sélection

**熬夜选手
**熬夜选手original
2020-05-01 15:54:45167parcourir

Tri par sélection

Le tri par sélection est l'un des algorithmes de tri les plus stables. Lors de son utilisation, plus la taille des données est petite, mieux c'est. Théoriquement parlant, le tri par sélection peut également être la méthode la plus courante à laquelle la plupart des gens pensent lors du tri.

Le tri par sélection est un algorithme de tri simple et intuitif. Comment ça marche :

Parcourez un tableau et, ce faisant, trouvez la valeur maximale et sa position dans le tableau. Ensuite, "échangez la position" de l'unité avec la valeur maximale avec la dernière unité du tableau. Après cela, la valeur maximale du tableau doit être placée à la dernière position.

Continuez à parcourir les données restantes dans le processus ci-dessus et faites la même chose. Ensuite, la valeur maximale de la partie restante peut également être placée à la dernière position de la partie restante - c'est l'avant-dernière position en tant que valeur. emplacement entier.

Et ainsi de suite. . . . . .

Image :

Tableau original
原始数组
18 22
12 15 23
9
第一趟 18
22 12 15 9 23
第二趟 18 9 12 15 22 23
第三趟 15 9 12 18 22 23
第四趟 12 9 15 18 22 23
第五趟 9 12 15 18 22 23
18 22

12 15 23 9
Premier voyage 18 22 12 15 9 23
Deuxième voyage 18 td>9 12 15 22 23 td>
Le troisième voyage 15 9 12 18 22 23
Le quatrième voyage 12 9 15 18 22 23
Le cinquième voyage 9 12 15 18 22 23
Le code est le suivant :

<?php
        $arr1 = array(18,22,12,15,23,9);
        $n = count($arr1);
        for ($i=0; $i < $n-1; $i++) { 
            //找最大值
            $max = $arr1[0];
            $max_key = 0;
            for ($k=0; $k < $n - $i; $k++) { 
                if ($arr1[$k] > $max) {
                    $max = $arr1[$k];
                    $max_key = $k;
                }
            }
            //交换
            $temp = $arr1[$max_key];
            $arr1[$max_key] = $arr1[$n-1-$i];
            $arr1[$n-1-$i] = $temp;
        }

Règles récapitulatives :

1 Pour trouver la valeur maximale (et l'indice) du début à la fin, et pour l'échanger, le nombre de fois est $n-1, $n. est la longueur du tableau

2. Ce que vous devez faire dans chaque voyage est : a) trouver la valeur maximale, à droite) et échanger la valeur maximale avec le dernier élément de ce voyage

; 3. Le nombre de données pour trouver la valeur maximale dans chaque passe est inférieur de 1 à celui de la passe précédente, dont il y a $n dans la première passe.

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