Lua Academy · leksjon

table.sort med sammenligningsfunksjoner

Sorter tabeller med egendefinerte sammenligningsfunksjoner og strategier for stabil sortering.

Leksjon 1 av 413 trinn

table.sort med sammenligningsfunksjoner er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva er table.sort?

table.sort sorterer en tabell på stedet ved hjelp av en sammenligningsfunksjon. Uten en sammenligningsfunksjon bruker den operatoren <.

Standard sortering stigende

Kall table.sort(t) på en tabell med tall eller strenger for å sortere stigende.

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

Egendefinert sammenligningsfunksjon

Send en funksjon function(a, b) return a < b end som det andre argumentet.

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

Sortering synkende

Vend om sammenligningen for å sortere i synkende rekkefølge.

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

Sortere tabeller etter et felt

Sorter en rekke med poster etter en bestemt feltnøkkel.

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 med flere nøkler

Sorter etter en primærnøkkel og deretter etter en sekundærnøkkel ved like verdier.

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

Merknad om stabilitet

Luas table.sort er ikke garantert stabil. Like elementer kan vises i hvilken som helst rekkefølge. Bruk en indeks som tie-breaker for deterministiske resultater.

Sortere strenger uten hensyn til store og små bokstaver

Normaliser med string.lower inne i sammenligningsfunksjonen.

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

Sortering med nøkkeluttrekker

Bufre uttrekte nøkler for å unngå gjentatte beregninger under sorteringen, ved hjelp av en Schwartzian-transformasjon.

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

Sortere store tabeller

For svært store tabeller bør du vurdere en Schwartzian-transformasjon: Koble hvert element sammen med sorteringsnøkkelen, sorter og hent deretter ut elementene. Da unngår du å beregne nøkkelen på nytt ved hver sammenligning.

På stedet kontra kopi

table.sort endrer den opprinnelige tabellen. Hvis du vil sortere en kopi, bruker du først table.move eller itererer for å klone tabellen, og sorterer deretter klonen.

Sammenligningsspørsmål

Hvilken sammenligningsfunksjon sorterer tall i stigende rekkefølge?

Oppsummering: table.sort

table.sort sorterer på stedet, godtar en valgfri sammenligningsfunksjon, er ikke stabil og brukes ofte med feltbaserte strategier eller strategier med flere nøkler for komplekse sorteringskrav.

Gratis å komme i gang

Lær deg Lua med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
40
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «table.sort med sammenligningsfunksjoner» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «table.sort med sammenligningsfunksjoner», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «table.sort med sammenligningsfunksjoner»?

Sorter tabeller med egendefinerte sammenligningsfunksjoner og strategier for stabil sortering. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lua Academy?

Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «table.sort med sammenligningsfunksjoner»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?

Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. table.sort med sammenligningsfunksjoner
  2. table.concat og table.move
  3. Dyp og grunn kopiering
  4. Transformere tabeller: map, filter, reduce
← Tilbake til Lua Academy