Tri par sélection
Écrire une fonction tri_selection
qui prend en paramètre un tableau tableau
de nombres entiers et qui trie ce tableau en place (c'est-à-dire que le tableau est modifié) par ordre croissant des valeurs.
On utilisera l'algorithme suivant :
- On parcourt le tableau de gauche à droite :
- on recherche le minimum du tableau entre cette position courante et la fin du tableau
- on échange alors les 2 valeurs
Exemples
🐍 Console Python
>>> tab = [1, 52, 6, -9, 12]
>>> tri_selection(tab)
>>> tab
[-9, 1, 6, 12, 52]
🐍 Console Python
>>> tab_vide = []
>>> tri_selection(tab_vide)
>>> tab_vide
[]
🐍 Console Python
>>> singleton = [9]
>>> tri_selection(singleton)
>>> singleton
[9]
###
# testsbksl-nlbksl-nltab = [1, 52, 6, -9, 12]bksl-nltripy-undselection(tab)bksl-nlassert tab == [-9, 1, 6, 12, 52], "Exemple 1"bksl-nlbksl-nltabpy-undvide = []bksl-nltripy-undselection(tabpy-undvide)bksl-nlassert tabpy-undvide == [], "Exemple 2"bksl-nlbksl-nlsingleton = [9]bksl-nltripy-undselection(singleton)bksl-nlassert singleton == [9], "Exemple 3"bksl-nlbksl-nlbksl-nl# Autres testsbksl-nlbksl-nlfrom random import samplebksl-nlfor i in range(10):bksl-nl nombres = list(sample(range(10py-strpy-str9), 100+i))bksl-nl attendu = sorted(nombres)bksl-nl tripy-undselection(nombres)bksl-nl assert len(nombres) == len(attendu), "Erreur, le tableau ne doit pas changer de taille"bksl-nl for a, b, in zip(nombres, attendu):bksl-nl assert a == b, "Erreur lors du tri"bksl-nlbksl-nl 5/5 def tripy-undselection(tableau):bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nltab = [1, 52, 6, -9, 12]bksl-nltripy-undselection(tab)bksl-nlassert tab == [-9, 1, 6, 12, 52], "Exemple 1"bksl-nlbksl-nltabpy-undvide = []bksl-nltripy-undselection(tabpy-undvide)bksl-nlassert tabpy-undvide == [], "Exemple 2"bksl-nlbksl-nlsingleton = [9]bksl-nltripy-undselection(singleton)bksl-nlassert singleton == [9], "Exemple 3"bksl-nlbksl-nlNone
A
Z