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. 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 pour 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. Le tri par sélection peut aussi être utilisé sur des listes. Le principe est identique, mais au lieu de déplacer les éléments par échanges, on réalise des suppressions et insertions dans la liste. L'invariant de boucle suivant permet de prouver la correction de l'algorithme : à la fin de l'étape i, le tableau est une permutation du tableau initial et les i premiers éléments du tableau coïncident avec les i premiers éléments du tableau trié. Le tri par sélection est un tri en place (les éléments sont triés directement dans la structure). Implémenté comme indiqué ci-dessus, ce n'est pas un tri stable (l'ordre d'apparition des éléments égaux n'est pas préservé). Toutefois, si l'on travaille sur une structure de données adaptée (typiquement une liste), il est facile de le rendre stable : à chaque itération, il convient de chercher la première occurrence de l'élément le plus petit de la partie non triée de la liste, et de l'insérer avant le premier élément de la partie non triée de la liste, plutôt que de l'échanger avec celui-ci.

À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (32)
BIO-378: Physiology lab I
Le TP de physiologie introduit les approches expérimentales du domaine biomédical, avec les montages de mesure, les capteurs, le conditionnement des signaux, l'acquisition et traitement de données. Le
BIO-379: Physiology lab II
Le TP de physiologie introduit les approches expérimentales du domaine biomédical, avec les montages de mesure, les capteurs, le conditionnement des signaux, l'acquisition et traitement de données. Le
CS-101: Advanced information, computation, communication I
Discrete mathematics is a discipline with applications to almost all areas of study. It provides a set of indispensable tools to computer science in particular. This course reviews (familiar) topics a
Afficher plus
Séances de cours associées (118)
Réservoirs et barrages : construction et dimensionnement hydrauliques
Explore le dimensionnement des réservoirs et des barrages en utilisant des courbes d'écoulement cumulatives et le dimensionnement des réservoirs pour les périodes sèches et pluvieuses.
Consommation d'oxygène : calculs de validation
Couvre les calculs de validation de la consommation d’oxygène dans Excel.
Algorithmes d'optimisation : approche de l'avidité
Explore les problèmes d'optimisation et les algorithmes gourmands pour une prise de décision efficace.
Afficher plus
Publications associées (45)

Optimal digital filter selection for remote photoplethysmography (rPPG) signal conditioning

Ata Jedari Golparvar

Remote photoplethysmography (rPPG) using camera-based imaging has shown excellent potential recently in vital signs monitoring due to its contactless nature. However, the optimum filter selection for pre-processing rPPG data in signal conditioning is still ...
IOP Publishing Ltd2023

Persistence of variant selection in red gold alloys

Roland Logé, Cyril Cayron, Margaux Nathalie Dominique Larcher

Recently, a new thermally activated distortion with amplification (TADA) effect has been reported in red gold alloys caused by the A1 -> L1(0) phase transformation. The macroscopic amplification is due to the persistence of variant selection nucleated unde ...
ELSEVIER SCIENCE SA2022

Towards a secure and trustworthy imaging with non-fungible tokens

Touradj Ebrahimi, Evgeniy Upenik, Davi Nachtigall Lazzarotto

Non fungible tokens (NFTs) are used to define the ownership of digital assets. More recently, there has been a surge of platforms to auction digital art as well as other digital assets in form of image, video, and audio content of all sorts. Although NFTs ...
2021
Afficher plus
Concepts associés (15)
Comparison sort
A comparison sort is a type of sorting algorithm that only reads the list elements through a single abstract comparison operation (often a "less than or equal to" operator or a three-way comparison) that determines which of two elements should occur first in the final sorted list. The only requirement is that the operator forms a total preorder over the data, with: if a ≤ b and b ≤ c then a ≤ c (transitivity) for all a and b, a ≤ b or b ≤ a (connexity). It is possible that both a ≤ b and b ≤ a; in this case either may come first in the sorted list.
Tri rapide
En informatique, le tri rapide ou tri pivot (en anglais quicksort) est un algorithme de tri inventé par C.A.R. Hoare en 1961 et fondé sur la méthode de conception diviser pour régner. Il est généralement utilisé sur des tableaux, mais peut aussi être adapté aux listes. Dans le cas des tableaux, c'est un tri en place mais non stable. La complexité moyenne du tri rapide pour n éléments est proportionnelle à n log n, ce qui est optimal pour un tri par comparaison, mais la complexité dans le pire des cas est quadratique.
Complexité en temps
En algorithmique, la complexité en temps est une mesure du temps utilisé par un algorithme, exprimé comme fonction de la taille de l'entrée. Le temps compte le nombre d'étapes de calcul avant d'arriver à un résultat. Habituellement, le temps correspondant à des entrées de taille n est le temps le plus long parmi les temps d’exécution des entrées de cette taille ; on parle de complexité dans le pire cas. Les études de complexité portent dans la majorité des cas sur le comportement asymptotique, lorsque la taille des entrées tend vers l'infini, et l'on utilise couramment les notations grand O de Landau.
Afficher plus

Graph Chatbot

Chattez avec Graph Search

Posez n’importe quelle question sur les cours, conférences, exercices, recherches, actualités, etc. de l’EPFL ou essayez les exemples de questions ci-dessous.

AVERTISSEMENT : Le chatbot Graph n'est pas programmé pour fournir des réponses explicites ou catégoriques à vos questions. Il transforme plutôt vos questions en demandes API qui sont distribuées aux différents services informatiques officiellement administrés par l'EPFL. Son but est uniquement de collecter et de recommander des références pertinentes à des contenus que vous pouvez explorer pour vous aider à répondre à vos questions.