Lua Academy · Lektion

table.sort med jämförelsefunktioner

Sortera tabeller med anpassade jämförelsefunktioner och strategier för stabil sortering.

Lektion 1 av 413 steg

table.sort med jämförelsefunktioner är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.

Vad är table.sort?

table.sort sorterar en tabell på plats med hjälp av en jämförelsefunktion. Utan jämförelsefunktion används operatorn <.

Standardmässig stigande sortering

Anropa table.sort(t) på en tabell med tal eller strängar för att sortera i stigande ordning.

local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) end

Anpassad jämförelsefunktion

Skicka en funktion, function(a, b) return a < b end, som det andra argumentet.

local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))

Fallande sortering

Vänd på jämförelsen för att sortera i fallande ordning.

local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))

Sortera tabeller efter ett fält

Sortera en array med poster efter en specifik fält-nyckel.

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) end

Sortering efter flera nycklar

Sortera efter en primär nyckel och sedan efter en sekundär nyckel vid lika värden.

table.sort(people, function(a, b)
  if a.age ~= b.age then return a.age < b.age end
  return a.name < b.name
end)

Anmärkning om stabilitet

Luas table.sort är inte garanterat stabil. Element med samma värde kan hamna i valfri ordning. Använd ett index som skiljande kriterium för deterministiska resultat.

Sortera strängar utan hänsyn till skiftläge

Normalisera med string.lower i jämförelsefunktionen.

table.sort(words, function(a, b)
  return a:lower() < b:lower()
end)

Sortering med nyckelutdragare

Cachelagra utdragna nycklar för att undvika upprepade beräkningar under sorteringen genom att använda en Schwartzian-transform.

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
end

Sortera stora tabeller

För mycket stora tabeller kan du använda en Schwartzian-transform: para ihop varje element med sin sorteringsnyckel, sortera och extrahera sedan elementen. Då behöver nyckeln inte beräknas om vid varje jämförelse.

På plats kontra kopia

table.sort ändrar den ursprungliga tabellen. Om du vill sortera en kopia använder du först table.move eller itererar för att skapa en klon och sorterar sedan klonen.

Jämförelsefunktionsfråga

Vilken jämförelsefunktion sorterar tal i stigande ordning?

Sammanfattning: table.sort

table.sort sorterar på plats, tar emot en valfri jämförelsefunktion, är inte stabil och används ofta med fältbaserade strategier eller strategier med flera nycklar för komplexa sorteringskrav.

Gratis att börja

Lär dig Lua med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
40
Lektioner
159

Vanliga frågor

Är lektionen ”table.sort med jämförelsefunktioner” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”table.sort med jämförelsefunktioner”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”table.sort med jämförelsefunktioner”?

Sortera tabeller med anpassade jämförelsefunktioner och strategier för stabil sortering. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lua Academy?

Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”table.sort med jämförelsefunktioner”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lua Academy-lektionen?

Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. table.sort med jämförelsefunktioner
  2. table.concat och table.move
  3. Djup kopiering och grund kopiering
  4. Omforma tabeller: map, filter, reduce
← Tillbaka till Lua Academy