Un cap pour ce chapitre
Ce que vous saurez faire
- Trier des enregistrements selon un descripteur
- Distinguer ordre numérique et ordre textuel
- Préserver les lignes et interpréter les égalités
Les bases utiles pour commencer
La clé de tri définit le classement
Une table possède plusieurs descripteurs, mais un tri simple utilise une valeur de comparaison par ligne, appelée clé de tri. Pour des livres, cette clé peut être l’année, le titre ou le nombre de pages. Le tri croissant place les petites clés avant les grandes ; le tri décroissant inverse ce classement. Les autres champs suivent la ligne entière. Cette règle conserve les informations : le livre doit garder son auteur et son année après déplacement. Trier séparément les titres et les années détruirait les enregistrements, même si chaque colonne semble correctement ordonnée.
Une clé de tri n’est pas forcément un identifiant unique. Plusieurs livres peuvent avoir la même année et doivent tous rester dans le résultat. Le tri ne sélectionne pas une seule ligne par clé : il ordonne l’ensemble des lignes.
Les types influencent l’ordre
Les textes "2", "10" et "9" ne sont pas classés comme les nombres 2, 10 et 9. Une comparaison textuelle examine les caractères dans l’ordre ; "10" peut donc précéder "2" parce que son premier caractère est plus petit. Pour trier des quantités numériques importées d’un CSV, il faut convertir les champs ou construire une clé numérique. Pour un identifiant, un ordre textuel peut au contraire être souhaité. On ne choisit donc pas un type uniquement pour obtenir le classement attendu sur un exemple : on le relie au sens du descripteur.
Pour des chaînes composées de chiffres, l’ordre textuel peut coïncider avec l’ordre numérique lorsqu’elles ont une même largeur et des zéros initiaux. Mais cette propriété ne dispense pas de définir le domaine. Les nombres négatifs ou les largeurs différentes peuvent modifier les comparaisons.
Utiliser une fonction de tri documentée
Python propose sorted, qui construit une nouvelle liste triée, et la méthode sort, qui réorganise une liste sur place. Une clé peut être fournie avec une fonction retournant le champ pertinent. En Première, l’usage d’une fonction de tri intégrée est autorisé pour le traitement des tables ; l’étude détaillée d’algorithmes comme insertion et sélection relève d’autres chapitres. Séparer ces deux objectifs permet d’analyser de vraies données sans devoir réécrire un tri à chaque projet, tout en apprenant ailleurs comment les stratégies de tri fonctionnent.
livres = [
{"titre": "Atlas", "annee": 2024},
{"titre": "Boussole", "annee": 2021},
{"titre": "Carte", "annee": 2023}
]
def annee(livre):
return livre["annee"]
classes = sorted(livres, key=annee, reverse=True)
print(classes)La fonction passée comme clé est appelée sur chaque ligne pour produire la valeur à comparer. On transmet la fonction, sans l’appeler immédiatement sur toute la table. Une fonction nommée courte rend cette circulation plus explicite qu’une syntaxe compacte encore inconnue.
Préciser les égalités et vérifier le résultat
Deux lignes peuvent posséder la même clé. Leur ordre relatif n’est alors pas déterminé par cette clé seule. Le tri Python est stable : il conserve l’ordre initial des éléments de clés égales. Cette propriété peut aider à expliquer un résultat, mais il ne faut pas inventer un second critère qui n’a pas été demandé. Pour vérifier un tri, contrôlez que les clés sont ordonnées, que toutes les lignes initiales sont toujours présentes et que leurs champs n’ont pas été mélangés. Un tableau vide ou d’une seule ligne est déjà trié.
Un tri stable conserve l’ordre des ex æquo même en décroissant lorsqu’on utilise le paramètre prévu par Python. Inverser après coup une liste déjà triée peut renverser les groupes d’égalités. La direction du tri et l’ordre interne des égalités sont deux propriétés distinctes.
Vérifier deux propriétés complémentaires
Après un tri croissant par année, on contrôle que chaque année est inférieure ou égale à la suivante. Ce contrôle accepte pourtant une table vide, même si la table initiale contenait trois livres. Il faut donc également vérifier que chaque enregistrement et ses répétitions ont été conservés.
Une liste d’années bien ordonnée ne suffit pas si les titres ont été mélangés avec d’autres années. Dans un tri de table, la ligne complète est l’unité déplacée. Une vérification solide compare les associations avant et après, puis l’ordre des clés, au lieu d’examiner seulement une colonne isolée.
Un classement stable avec des valeurs répétées
On part de D avec douze pages, B avec sept pages et A avec douze pages. Un tri croissant stable donne B, D, A. Le classement décroissant donne D, A, B : D reste avant A parce qu’ils ont la même clé. L’ordre alphabétique n’intervient pas.
Si la consigne exige l’ordre alphabétique en cas d’égalité, elle introduit un second critère qu’il faut programmer explicitement. Sans cette précision, plusieurs ordres de clés égales peuvent respecter le tri mathématique, tandis que la stabilité documentée permet de prévoir le résultat particulier de l’outil utilisé.
À vous de faire varier les choses
Le classement surprenant des nombres-textes
Choisissez le type de comparaison et le sens du tri. Observez les identifiants qui suivent toujours leur valeur.
Lire le résultat de l’expérience initiale
Ordre : B, A, D, C
L’ordre textuel compare les caractères. Ainsi "10" précède "2" en ordre croissant.
| Rang | Identifiant | Pages |
|---|---|---|
| 1 | B | 10 |
| 2 | A | 2 |
| 3 | D | 2 |
| 4 | C | 9 |
Un ordre surprenant peut être parfaitement cohérent avec le type utilisé. Vérifiez la question avant d’accuser l’algorithme de tri.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Trier des nombres écrits comme textes
Classez "2", "10" et "9" selon l’ordre textuel, puis selon leur valeur numérique. Pourquoi les résultats diffèrent-ils ?
Indice 1
L’ordre textuel commence par comparer les premiers caractères.
Indice 2
La conversion en entier change la nature de la comparaison.
Comprendre la correction
L’ordre textuel donne "10", "2", "9", tandis que l’ordre numérique donne 2, 9, 10. Dans le premier cas, le caractère 1 précède 2. Dans le second, dix est supérieur à neuf. Un fichier CSV peut contenir du texte même lorsque son affichage ressemble à des nombres.
Conserver les associations
Les lignes sont (Atlas, 2024), (Boussole, 2021), (Carte, 2023). Donnez l’ordre croissant par année, avec les deux champs.
Indice 1
Déplacez chaque couple entier.
Indice 2
L’année 2021 appartient toujours à Boussole.
Comprendre la correction
L’ordre est (Boussole, 2021), (Carte, 2023), (Atlas, 2024). Les titres suivent leurs années. Trier seulement la colonne des années tout en laissant les titres en place attribuerait 2021 à Atlas et rendrait les données fausses. La ligne est l’unité déplacée par le tri.
Une fonction qui ne renvoie pas la liste
Un élève écrit resultat = livres.sort() puis découvre que resultat vaut None. Quelle confusion explique ce comportement ?
Indice 1
La méthode modifie la liste existante.
Indice 2
sorted crée en revanche un nouveau résultat.
Comprendre la correction
sort réorganise livres sur place et renvoie None ; resultat reçoit donc None. Pour obtenir une nouvelle liste, on utilise resultat = sorted(livres), avec la clé adaptée si nécessaire. Si la modification sur place est souhaitée, on appelle livres.sort() puis on utilise livres directement. Le contrat de chaque outil précise cette différence.
Deux clés égales
Une table contient A : 12 pages, B : 7 pages, C : 12 pages, dans cet ordre. Quel ordre donne un tri Python stable croissant sur le nombre de pages ?
Indice 1
B possède la plus petite clé.
Indice 2
A et C conservent leur ordre relatif initial.
Comprendre la correction
Le résultat est B, A, C. B passe devant les deux lignes de douze pages. A reste avant C grâce à la stabilité du tri. Ce résultat ne signifie pas que le tri a utilisé l’ordre alphabétique comme deuxième critère : avec C avant A initialement, leur ordre aurait été conservé dans l’autre sens.
Un classement décroissant stable
La table initiale contient D :12 pages, B :7 pages, A :12 pages, C :9 pages. Donnez l’ordre croissant puis décroissant d’un tri stable par pages. Comparez le décroissant à un simple renversement du résultat croissant.
Indice 1
Les lignes D et A doivent conserver leur ordre relatif.
Indice 2
Renverser toute la liste renverse aussi les égalités.
Comprendre la correction
Le croissant donne B, C, D, A. Le décroissant stable donne D, A, C, B. Renverser le premier résultat donne A, D, C, B, ce qui inverse D et A. Utiliser directement le sens décroissant de l’outil conserve la stabilité annoncée. Le sens du tri n’ajoute pas de critère alphabétique.
Des chaînes trompeuses
Trois objets portent les quantités textuelles A :"12", B :"3", C :"20". Donnez les ordres textuel et numérique croissants. Expliquez la conversion à réaliser et les deux propriétés à vérifier après le tri.
Indice 1
En texte, le premier caractère est comparé d’abord.
Indice 2
Les objets doivent conserver leurs quantités.
Comprendre la correction
Le textuel donne A, C, B, car un précède deux puis trois. Le numérique donne B, A, C. Il faut comparer les quantités converties en entiers si elles représentent bien des nombres. On vérifie ensuite l’ordre numérique et la conservation des trois associations identifiant-quantité, sans modifier les autres champs.
Un résultat ordonné mais incomplet
Une table contient (A,2022), (B,2020), (C,2022). Un programme annonce comme résultat (B,2020), (A,2022), en supprimant une ligne de même année. Ce résultat est-il trié ? Est-ce un tri correct de la table initiale ? Proposez un contrôle manquant.
Indice 1
Être ordonné ne signifie pas avoir conservé toutes les lignes.
Indice 2
Deux années égales n’identifient pas nécessairement le même objet.
Comprendre la correction
Les années du résultat sont bien croissantes, mais C a été perdu. Ce n’est donc pas un tri correct de la table. Il faut contrôler la conservation de chaque enregistrement et de sa multiplicité. La clé année sert à classer ; elle ne permet pas de supprimer des objets distincts comme s’ils étaient des doublons.
Les erreurs qui méritent un détour
- Trier chaque colonne séparément
- Les valeurs d’une ligne décrivent un même enregistrement et doivent se déplacer ensemble.
- Supposer qu’un chiffre lu dans un fichier est déjà numérique
- Vérifiez les types et la clé utilisée avant d’interpréter l’ordre produit.
La fiche à garder
L’essentiel à retenir
- La clé de tri exprime le critère choisi.
- Les lignes complètes se déplacent ensemble.
- Une vérification porte sur l’ordre et la conservation des données.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
