Ceci est une ancienne révision du document !
Un algorithme de tri par sélection est un algorithme qui permet de trier une liste dans l’ordre croissant. Tout en conservant la même structure, c'est-à-dire que le programme conserve la liste d’origine au lieu d’en créé une nouvelle.
Dans une Liste à n élément (d’indice 0 à n-1, car on commence par 0 et non par 1), l’algorithme cherche le plus petit entier de la liste et l'échange avec l’élément d’indice 0.
Rechercher le second plus petit élément du tableau, et l'échanger avec l'élément d'indice 1
Continuer de cette façon jusqu'à ce que le tableau soit entièrement trié.
Le rouge est ic le minimum et le bleu le “cursseur” qui vérifie si il est plus petit que le le minimum enregistré
""" Algorithme de tri par sélection """ # Initialisation de Variables t = [1,6,9,3,2,0,7,5,8,4] # Tableau d'entiers """ Objectif : Algorithme de tri par sélection Entrée : Liste Sortie : Liste trié """ def tri_select(t): for i in range(len(t)-1): min = i # min = l'indice du premier élément de la liste non triée for j in range(i,len(t)): # Pour la suite de la liste non triée if t[j] < t[min] : # si l'élément à l'indice j est plus petit que celui a l'indice min min = j # l'indice min devient alors l'indice j t[min],t[i] = t[i],t[min] # échange l'élément à l'indice min avec celui de l'indice i return t #Programme principal print(t) # [1, 6, 9, 3, 2, 0, 7, 5, 8, 4] print(tri_select(t)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Cet algorithme permet le tri d'un tableau d'entiers en mettant par ordre croissant les nombres présents dans celui-ci.
""" Entrée : tab : tableau/list -> non trié Sortie : tab : tableau/list -> trié ( dans l'ordre croissant ) Objectif : Trié le tableau tab, avec la méthode par sélection """ def tri_selection(tab): for i in range(len(tab)): # Répétition pour modifier tout le tableau min = i # Intialisation de Variable for j in range(i+1, len(tab)): # Pour balayer tout le tableau if tab[min] > tab[j]: # Si on trouve un nombre plus petit min = j # Décalage k = tab[i] # Décalage tab[i] = tab[min] # Décalage tab[min] = k # Décalage return tab # Renvoyer tab
La méthode par sélection divise tout d’abord le tableau ( liste ) en deux : une partie triée et une autre non triée, pour délimiter cela il y a des bornes ( représenter par des variable, souvent appelés “ debut” et “fin” ). Contrairement à celle par insertion cette méthode cherche le plus petit élément du tableau ( de la partie non trié ) puis cette élément échange sa place avec celui qui est à la première place du tableau non trié et après ce décalage il fera partie de la partie trié.