Enseignement de l'informatique et du numérique au lycée Boissy d'Anglas
https://icn-isn-boissy.yj.fr/wp/2019/06/19/tri-par-selection/
Export date: Fri May 2 4:32:51 2025 / +0000 GMT

Tri par sélection


Pour simplifier nous allons trier une liste de 9 valeurs

[ 8, 6, 3, 9, 2, 1, 4, 5, 7 ]

pour commencer l'explication , utilisons 2 listes

Tri par sélection

A faire: sur le document réponse Libre Office.

Réaliser le même schéma avec [ 5, 12, 3, 7, 4 ] sur le document réponse Libre Office. En fin de document vous pouvez découper les numéros pour faire une simulation à la main.

Combien de comparaison? pour trier [ 8, 6, 3, 9, 2, 1, 4, 5, 7 ]

pour sélectionner l'élément le plus petit on liste les 9 valeurs et on fait 8 comparaisons, pour le deuxième on fait 7 comparaisons, pour le troisième 6 comparaisons et ainsi de suite. D'où nombre de comparaison= 8+7+6+....+1=36.

Par extension si notre liste est constituée de n valeurs, le nombre de comparaison = (n-1)+(n-2)+(n-3)+ .....+3+2+1 en factorisant nombre de comparaison=n*(n-1) /2 soit n²/2-n/2 .

On dit que l'algorithme de tri par sélection a donc une complexité en O(n²). On parle aussi de complexité quadratique.

Voici une implémentation sous python avec 2 tableaux ou listes comme le graphique ci dessus

def tri_selection(tableau):
    '''tri d'un tableau, l'argument tableau est un tableau ou liste, la fonction renvoie un autre tableau ou liste resultat'''
    resultat = [] 
    longueur = len(tableau)                 
    
    while len(resultat) != longueur:        
        minimum = tableau[0]                   
        
        for i in range(1, len(tableau)):        
            if minimum > tableau[i]:                
                minimum = tableau[i]                    
        resultat.append(minimum)                
        tableau.remove(minimum)                 
    return resultat 

voici l'algorithme du tri par sélection ( ici une seule liste )

  • PROCEDURE tri_Selection ( Tableau a[1:n])
  •     POUR i VARIANT DE 1 A (n - 1) FAIRE
  •         TROUVER [j] LE PLUS PETIT ELEMENT DE [i + 1:n];
  •         ECHANGER [j] ET [i];
  • FIN PROCEDURE;

en python à essayer

def tri_selection(tab):
   print(tab)
   for i in range(len(tab)):#boucle sur toute la liste
      # Trouver le min
       min = i
       for j in range(i+1, len(tab)):
           if tab[min] > tab[j]:
               min = j

       tmp = tab[i]
       print('tmp',tmp)#affiche tmp pour visualiser l'algo
       tab[i] = tab[min]
       print ('tab1',tab)#affiche la liste tab pour visualiser l'algo
       tab[min] = tmp
       print('tab2',tab)#affiche la liste tab pour visualiser l'algo
   return tab
# Programme principale pour tester le code ci-dessus
tab = [98, 22, 15, 32, 2, 74, 63, 70]#changer les valeurs de la liste pour un autre essai

tri_selection(tab)

print ("Le tableau trié est:")
print (tab)

vous pouvez trouver des explications supplémentaire ici:

site de podcastscience 4, site de David Roche 5 et sur le site http://lwh.free.fr 6

Retour vers article algorithme de tri 7

Links:
  1. https://icn-isn-boissy.yj.fr/wp/wp-content/uploads /2019/07/fichier-reponse-tri.odt
  2. https://icn-isn-boissy.yj.fr/wp/wp-content/uploads /2022/02/tri-selection-2-listes.tar
  3. https://icn-isn-boissy.yj.fr/wp/wp-content/uploads /2019/06/tri_selection-1.zip
  4. https://www.podcastscience.fm/dossiers/2014/09/04/ les-tris/
  5. https://pixees.fr/informatiquelycee/n_site/nsi_pre m_tri_algo.html
  6. http://lwh.free.fr/pages/algo/tri/tri.htm
  7. https://icn-isn-boissy.yj.fr/wp/2019/06/19/algorit hmes-de-tri/
Post date: 2019-06-19 10:47:41
Post date GMT: 2019-06-19 08:47:41

Post modified date: 2022-02-07 17:07:31
Post modified date GMT: 2022-02-07 16:07:31

Export date: Fri May 2 4:32:51 2025 / +0000 GMT
This page was exported from Enseignement de l'informatique et du numérique au lycée Boissy d'Anglas [ https://icn-isn-boissy.yj.fr/wp ]
Export of Post and Page has been powered by [ Universal Post Manager ] plugin from www.ProfProjects.com