Le tri par sélection (ou tri par extraction) est un algorithme de tri par comparaison. Cet algorithme est simple, mais considéré comme inefficace car il s'exécute en temps quadratique en le nombre d'éléments à trier, et non en temps pseudo linéaire. Description, pseudo-code et variantes [ modifier | modifier le code] Animation représentant le tri par sélection Sur un tableau de n éléments (numérotés de 0 à n-1, attention un tableau de 5 valeurs (5 cases) sera numéroté de 0 à 4 et non de 1 à 5), le principe du tri par sélection est le suivant: rechercher le plus petit élément du tableau, et l'échanger 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é. En pseudo-code, l'algorithme s'écrit ainsi: procédure tri_selection(tableau t) n ← longueur(t) pour i de 0 à n - 2 min ← i pour j de i + 1 à n - 1 si t[j] < t[min], alors min ← j fin pour si min ≠ i, alors échanger t[i] et t[min] fin procédure Une variante consiste à procéder de façon symétrique, en plaçant d'abord le plus grand élément à la fin, puis le second plus grand élément en avant-dernière position, etc.
8 est trouvé, les places sont échangées: T = [5, 6, 8, 9, 10] on prend 6 et on cherche dans les précédents la plus grande valeur supérieure à 6. Rien n'est trouvé, au final: T = [5, 6, 8, 9, 10] Si le nombre de comparaisons reste important (n au premier tour, (n-1) au second, etc. soit égale à (n x (n-1))/2 comparaisons), le nombre de permutations est lui plus réduit que pour les précédents tris. Voici un algo en C pour effectuer un tri par extractions. /**sous programme codant le tri par la methode tri par extraction void triExtraction ( Tableau T, int nb) printf ( "Tri par Extraction, initialement T = "); for ( i = nb - 1; i > 0; i --) int k = i; for ( j = 0; j < i; j ++) if ( T [ j] > T [ k]) k = j;}} if ( k! = i) permuter ( T, i, k);}} printf ( "fin du tri par Extraction, nb comparaisons =%d, nb permutations =%d. \n ", nbComp, nbPermut); printf ( "Tri par Extraction, maintenant T = "); Tri par Insertion Le tri par insertion reprend un peu le principe du tri à bulles; à ceci près qu'il s'agit de « descente de bulles » et chaque descente de bulle s'arrête dès que la bulle courante ne peut descendre plus bas.
Si vous n'êtes pas convaincu, faites le test avec un tableau de 6 éléments, vous devriez trouver 5 + 4 + 3 + 2 +1 = 15 comparaisons. Vous avez sans doute déjà remarqué que nous avons un résultat similaire au tri par insertion (sauf que nous nous intéressons ici aux comparaisons alors que pour le tri par insertion nous nous intéressons aux décalages, mais cela ne change rien au problème) Conclusion: nous allons trouver exactement le même résultat que pour le tri par insertion: l'algorithme de tri par sélection a une complexité en O($n^2$) (complexité quadratique). Nous avons vu précédemment des algorithmes de complexité linéaire ($O(n)$) avec les algorithmes de recherche d'un entier dans un tableau, de recherche d'un extremum ou encore de calcul d'une moyenne. Nous avons vu ici que les algorithmes de tri par sélection et de tri par insertion ont tous les deux une complexité quadratique ($O(n^2)$). Il est important de bien avoir conscience de l'impact de ces complexités sur l'utilisation des algorithmes: si vous doublez la taille du tableau, vous doublerez le temps d'exécution d'un algorithme de complexité linéaire, en revanche vous quadruplerez le temps d'exécution d'un algorithme de complexité quadratique.
Tri par sélection - YouTube
Séparateur à eau ou à air La séparation consiste en une dissociation et une épuration progressive du gisement pour obtenir des paillettes ou des granulés composés à 100% de matière plastique homogène. Le tri des matières, sous forme d'objets (déchets) ou de paillettes est par définition le métier de tous les recycleurs. Plusieurs procédés utilisant l'eau ou l'air ont plus que fait leur preuve dans les procédés des recycleurs. Séparateur de corps lourds Nouveau système de décantation dédié aux éléments « lourds » comme les métaux, le verre et les cailloux. Situé en début de processus (avant le broyeur), ce piège est la 1re étape de séparation, permettant de protéger les éléments situés en aval du processus tel que les couteaux des broyeurs et les laveurs et le système de traitement des eaux de la pollution et des casses engendrés par ce type d' indésirables. Idéal pour des gisements riches en sédiments, peu trié au départ, il augmente la durée de vie des rotors et des couteaux dont leur longévité est raccourcie par la présence en quantité de matières destructrices: verre, métaux et sédiments solides.
Interprétation Un exercice On utilise un algorithme de tri de coût quadratique. Il met 3 secondes pour trier un liste de 10 000 nombres. Quel sera le temps approximativement pour trier 20 000 nombres? Solution On calcule le rapport des nombres d'éléments de chaque liste: pour passer de 10 000 à 20 000 on multiplie par 2. Donc le temps sera multiplié par 2² = 4. Soit 3 × 4 = 12 secondes.
Maison À Vendre Hoymille, 2024