Comment trier dans l'ordre croissant des nombres dans une liste (ou des noms dans une liste?)
Comment définir une fonction qui à partir de [7,6,2,5,4] retourne [2,4,5,6,7] ?
Comment définir une fonction qui à partir de ['Char','Céline','Camus','Chateaubriand','Colette'] retourne ['Camus','Céline','Char','Chateaubriand','Colette'] ?
Par la suite on travaille avec des listes de nombres ou (exclusif) des listes de noms
L'idée est de parcourir le tableau du début à la fin afin de sélectionner le plus petit élément puis d'échanger les places du premier élément du tableau avec celle du plus petit élément
Ensuite on parcourt le tableau de la deuxième place jusqu'à la fin pour sélectionner le plus petit élément puis d'échanger les places du deuxième élément du tableau avec celle du plus petit élément
Voici sur un exemple le tri par sélection
L'algorithme en pseudo-code est
Pour i de 0 jusqu'à n (le dernier indice de la liste)
j <- sélectionner le plus petit élément de la liste entre les éléments d'indice i et n
échanger les élements d'indice i et j de la liste
Définir une fonction minimum(liste) qui retourne le premier indice de la plus petite valeur de la liste
Par exemple minimum([3,2,5,2,7]) retourne l'indice 1 de la plus petite valeur 2
Définir une nouvelle fonction selection(liste,i) (en modifiant légèrement la fonction précédente) qui retourne le premier indice de la plus petite valeur de la liste à partir de l'indice i
Par exemple selection([3,2,5,2,7],2) retourne l'indice 3 de la plus petite valeur 2
Définir une fonction echange(i,j,liste) qui échange les positions des éléments d'indice i et j de la liste
Par exemple echange(0,1,[3,2,5,2,7]) modifie la liste et celle-ci devient [2,3,5,2,7]
Traduire l'algorithme du tri par sélection en définissant une fonction triSelection(liste)
Par exemple triSelection([3,2,5,2,7]) transforme la liste [3,2,5,2,7] en [2,2,3,5,7]
Utiliser la fonction sur des listes de nombres ou de noms