Adloun

Trier une liste

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 6 — Listes et simulations aléatoires · Manipuler une liste

Énoncé

Comparer sorted(L) et L.sort() : que renvoient-ils, et que font-ils à L ? Puis écrire un tri par sélection, et compter ses comparaisons.

Corrigé

L = [5, 2, 9, 1]
print(sorted(L))   # [1, 2, 5, 9] — une NOUVELLE liste
print(L)           # [5, 2, 9, 1] — inchangée

print(L.sort())    # None !
print(L)           # [1, 2, 5, 9] — modifiée sur place

L.sort() renvoie None : écrire L = L.sort() détruit la liste. C'est une erreur très fréquente, cousine de L = L.append(x).

Tri par sélection :

def tri_selection(L):
    L = L.copy()
    for i in range(len(L)):
        indice_min = i
        for j in range(i + 1, len(L)):
            if L[j] < L[indice_min]:
                indice_min = j
        L[i], L[indice_min] = L[indice_min], L[i]
    return L

Il effectue comparaisons, soit environ : pour éléments, mais pour . Le tri de Python, lui, en demande de l'ordre de — d'où l'écart considérable sur de grandes listes.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.