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

Retour en haut de la page