table.sort mit Vergleichsfunktionen
Sortieren Sie Tabellen mit benutzerdefinierten Vergleichsfunktionen und stabilen Sortierverfahren
table.sort mit Vergleichsfunktionen ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist table.sort?
table.sort sortiert eine Tabelle direkt und verwendet dabei eine Vergleichsfunktion. Ohne Vergleichsfunktion wird der Operator < verwendet.
Aufsteigende Standardsortierung
Rufen Sie table.sort(t) für eine Tabelle mit Zahlen oder Zeichenketten auf, um sie aufsteigend zu sortieren.
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endBenutzerdefinierter Vergleicher
Übergeben Sie als zweites Argument eine Funktion wie function(a, b) return a < b end.
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))Absteigende Sortierung
Kehren Sie den Vergleich um, um absteigend zu sortieren.
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))Tabellen nach einem Feld sortieren
Sortieren Sie ein Array aus Datensätzen nach dem Schlüssel eines bestimmten Feldes.
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) endSortierung nach mehreren Schlüsseln
Sortieren Sie zuerst nach einem Primärschlüssel und bei Gleichstand nach einem Sekundärschlüssel.
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)Hinweis zur Stabilität
table.sort in Lua ist nicht garantiert stabil. Gleiche Elemente können in beliebiger Reihenfolge erscheinen. Verwenden Sie einen Index als zusätzlichen Vergleichsschlüssel, um deterministische Ergebnisse zu erhalten.
Zeichenketten ohne Berücksichtigung der Groß-/Kleinschreibung sortieren
Normalisieren Sie die Zeichenketten mit string.lower innerhalb des Vergleichers.
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)Sortieren mit einem Schlüssel-Extraktor
Speichern Sie extrahierte Schlüssel zwischen, um wiederholte Berechnungen während der Sortierung zu vermeiden. Verwenden Sie dazu einen Ansatz nach dem Schwartzian-Transform-Muster.
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
endGroße Tabellen sortieren
Erwägen Sie für sehr große Tabellen einen Schwartzian Transform: Paaren Sie jedes Element mit seinem Sortierschlüssel, sortieren Sie anschließend und extrahieren Sie dann die Elemente. Dadurch wird vermieden, den Schlüssel bei jedem Vergleich neu zu berechnen.
Direkte Änderung vs. Kopie
table.sort verändert die ursprüngliche Tabelle. Um eine Kopie zu sortieren, verwenden Sie zunächst table.move oder durchlaufen Sie die Tabelle zum Klonen und sortieren Sie anschließend den Klon.
Vergleicher-Frage
Welcher Vergleicher sortiert Zahlen in aufsteigender Reihenfolge?
Zusammenfassung: table.sort
table.sort sortiert direkt, akzeptiert einen optionalen Vergleicher, ist nicht stabil und wird häufig mit feldbasierten oder mehrschlüsseligen Strategien für komplexe Sortieranforderungen verwendet.
Häufig gestellte Fragen
Ist die Lektion „table.sort mit Vergleichsfunktionen“ kostenlos?
Ja — der vollständige Text von „table.sort mit Vergleichsfunktionen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „table.sort mit Vergleichsfunktionen“?
Sortieren Sie Tabellen mit benutzerdefinierten Vergleichsfunktionen und stabilen Sortierverfahren Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „table.sort mit Vergleichsfunktionen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- table.sort mit Vergleichsfunktionen
- table.concat und table.move
- Tiefe und flache Kopien
- Tabellen transformieren: map, filter, reduce