table.sort avec des comparateurs
Triez des tables avec des fonctions de comparaison personnalisées et des stratégies de tri stable.
table.sort avec des comparateurs est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que table.sort ?
table.sort trie un tableau sur place à l'aide d'une fonction de comparaison. Sans comparateur, il utilise l'opérateur <.
Tri croissant par défaut
Appelez table.sort(t) sur un tableau de nombres ou de chaînes pour effectuer un tri croissant.
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endComparateur personnalisé
Transmettez une fonction function(a, b) return a < b end comme deuxième argument.
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))Tri décroissant
Inversez la comparaison pour effectuer un tri décroissant.
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))Trier des tableaux selon un champ
Triez un tableau d'enregistrements selon la clé d'un champ donné.
local people = {
{name="Charlie", age=30},
{name="Alice", age=25},
{name="Bob", age=28}
}
table.sort(people, function(a, b) return a.age < b.age end)
for _, p in ipairs(people) do print(p.name, p.age) endTri multiclés
Triez selon une clé principale, puis selon une clé secondaire en cas d'égalité.
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)Remarque sur la stabilité
Le table.sort de Lua n'est pas garanti stable. Les éléments égaux peuvent apparaître dans n'importe quel ordre. Utilisez un indice comme critère de départage pour obtenir des résultats déterministes.
Tri insensible à la casse des chaînes
Normalisez les chaînes avec string.lower dans le comparateur.
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)Tri avec un extracteur de clé
Mettez en cache les clés extraites pour éviter les calculs répétés pendant le tri, en utilisant une approche fondée sur la transformation de Schwartz.
local function sortBy(t, keyFn)
local keyed = {}
for i, v in ipairs(t) do keyed[i] = {val=v, key=keyFn(v)} end
table.sort(keyed, function(a, b) return a.key < b.key end)
for i, item in ipairs(keyed) do t[i] = item.val end
endTrier de grands tableaux
Pour de très grands tableaux, envisagez une transformation de Schwartz : associez chaque élément à sa clé de tri, triez, puis extrayez les éléments. Cela évite de recalculer la clé à chaque comparaison.
Sur place ou par copie
table.sort modifie le tableau original. Pour trier une copie, utilisez d'abord table.move ou parcourez le tableau pour en créer un clone, puis triez le clone.
Question sur le comparateur
Quel comparateur trie les nombres dans l'ordre croissant ?
Récapitulatif : table.sort
table.sort trie sur place, accepte un comparateur facultatif, n'est pas stable et s'utilise couramment avec des stratégies fondées sur les champs ou sur plusieurs clés pour répondre à des exigences de classement complexes.
Questions Fréquemment Posées
La leçon « table.sort avec des comparateurs » est-elle gratuite ?
Oui — le texte complet de « table.sort avec des comparateurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « table.sort avec des comparateurs » ?
Triez des tables avec des fonctions de comparaison personnalisées et des stratégies de tri stable. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « table.sort avec des comparateurs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- table.sort avec des comparateurs
- table.concat et table.move
- Copie profonde et copie superficielle
- Transformer des tables : map, filter, reduce