Principe On commence par rechercher le plus petit élement du tableau puis on l'échange avec le premier élement. Ensuite, on cherche le deuxième plus petit élement et on l'échange avec le deuxième élément du tableau et ainsi de suite jusqu'à ce que le tableau soit entièrement trié. Voir l'animation proposée. lien Algorithme et exemple d'implémentation en python On peut formaliser l'algorithme du tri par sélection avec le pseudo-code suivant: Tri_selection(t) t: tableau de n éléments (t[0.. n-1) Pour i allant de 0 à n-2: idxmini = i Pour j allant de i+1 à n-1: Si t[j] < t[idxmini]: idxmini = j Echanger t[i] et t[idxmini] Travail Appliquer cet algorithme à la main sur le tableau t = [3, 4, 1, 7, 2]. Tri par sélection Python - Implémentation de l'algorithme. donner une implémentation possible en python de cet algorithme et tester. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def echange ( t, i, j): """ Permute les éléments situés aux index i et j du tableau t t: tableau non vide i, j: entiers dans l'intervalle [0, len(t)-1] tmp = t [ i] t [ i] = t [ j] t [ j] = tmp def tri_selection ( t): trie par ordre croissant les éléments de t n = len ( t) #Compléter le code # Test t = [ 5, 6, 1, 1, 15, 0, 4] tri_selection ( t) assert t == [ 0, 1, 1, 4, 5, 6, 15] Validité de l'algorithme La terminaison est assurée car l'algorithme fait intervenir deux boucles bornées (boucle for).
Ensuite, nous répétons le processus pour chacun des éléments restants dans la liste non triée. L'élément suivant entrant dans la liste triée est comparé aux éléments existants et placé à sa position correcte. Donc, à la fin, tous les éléments de la liste non triée sont triés. Algorithme tri par sélection python. def selection_sort(input_list): for idx in range(len(input_list)): min_idx = idx for j in range( idx +1, len(input_list)): if input_list[min_idx] > input_list[j]: min_idx = j # Swap the minimum value with the compared value input_list[idx], input_list[min_idx] = input_list[min_idx], input_list[idx] l = [19, 2, 31, 45, 30, 11, 121, 27] selection_sort(l) print(l) [2, 11, 19, 27, 30, 31, 45, 121]
Tri à bulles (bubble sort) Le tri à bulles est un algorithme de tri très simple dont le principe est de faire remonter à chaque étape le plus grand élément du tableau à trier, comme les bulles d'air remontent à la surface de l'eau (d'où le nom de l'algorithme). Commençons par un exemple du fonctionnement de l'algorithme. Supposons qu'on souhaite trier la suite de nombres Voici comment se passe le premier passage. [ 5, 1, 2, 4, 3] # On compare 5 et 1 et on les inverse. Implémentation d'algorithmes classiques/Algorithmes de tri/Tri par sélection — Wikilivres. [ 1, 5, 2, 4, 3] # On compare 5 et 2 et on les inverse. [ 1, 2, 5, 4, 3] # On compare 5 et 4 et on les inverse. [ 1, 2, 4, 5, 3] # On compare 5 et 3 et on les inverse. [ 1, 2, 4, 3, 5] # Fin du premier passage. Comme on peut le voir, l'algorithme compare à chaque fois des éléments adjacents et les échange s'ils ne sont pas dans l'ordre. À la fin de ce premier passage, l'élément le plus grand du tableau (ici l'élément 5) se retrouve à la fin du tableau à sa position définitive. Le tableau n'est cependant pas encore complètement trié et nous devons donc continuer par un nouveau passage.
La longueur de l'objet à l'étape 1 sera celle de la chaîne de caractères saisis. Ce n'est qu'à l'étape 2 (mieux en 3) que vous aurez le nombre d'entiers (à trier). - W PS: comme vous avez allègrement sauté l'étape 3 vous comparez quoi dans le tri? Architectures post-modernes. Python sur DVP c'est aussi des FAQs, des cours et tutoriels 08/12/2014, 20h47 #3 Membre chevronné Partir déjà d'une liste déjà faite. Est-ce le résultat que vous cherchez vraiment? Python - Algorithmes de tri. 1 2 3 4 5 6 7 8 9 10 Liste1 = [ 6, 5, 8, 2] #je rentre: "6 5 8 2" (sans les guillemets) nombre = Liste1 [ 0] if nombre > Liste1 [ k]: #erreur: "list index out of range" nombre = Liste1 [ k] La première étape avec le "input" est en effet délicate: n'oubliez pas que le "input" donne une chaîne. 08/12/2014, 22h35 #4 Envoyé par wiztricks comme vous avez allègrement sauté l'étape 3 vous comparez quoi dans le tri? Quelle étape 3??? Quant au programme de marco, Il m'affiche 5, alors qu'il devrait afficher 8... 08/12/2014, 23h55 #5 Salut Envoyé par pito2901 Ben, de façon évidente l'item numéroté 3.