Lua Academy · Ders

Karşılaştırıcılarla table.sort

Tabloları özel karşılaştırıcı işlevleri ve kararlı sıralama stratejileriyle sıralayın.

1. ders / 413 adım

Karşılaştırıcılarla table.sort, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

table.sort Nedir?

table.sort, bir karşılaştırma işlevi kullanarak tabloyu yerinde sıralar. Karşılaştırıcı verilmezse < işleçini kullanır.

Varsayılan Artan Sıralama

Sayılar veya dizelerden oluşan bir tabloyu artan sırada sıralamak için table.sort(t) çağrısını kullanın.

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

Özel Karşılaştırıcı

İkinci bağımsız değişken olarak function(a, b) return a < b end işlevini geçirin.

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

Azalan Sıralama

Azalan sırada sıralamak için karşılaştırmayı tersine çevirin.

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

Tabloları Bir Alana Göre Sıralama

Kayıt dizisini belirli bir alan anahtarına göre sıralayın.

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

Çok Anahtarlı Sıralama

Birincil anahtara, eşitlik durumlarında ise ikincil anahtara göre sıralayın.

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

Kararlılık Notu

Lua'nın table.sort işlevinin kararlı olduğu garanti edilmez. Eşit öğeler herhangi bir sırada görünebilir. Belirli sonuçlar elde etmek için eşitlik bozucu olarak bir dizin kullanın.

Dizeleri Büyük-Küçük Harfe Duyarsız Sıralama

Karşılaştırıcının içinde string.lower kullanarak dizeleri normalleştirin.

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

Anahtar Çıkarıcıyla Sıralama

Schwartz dönüşümü yaklaşımını kullanarak, sıralama sırasında yinelenen hesaplamaları önlemek için çıkarılan anahtarları önbelleğe alın.

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

Büyük Tabloları Sıralama

Çok büyük tablolar için Schwartz dönüşümünü kullanmayı düşünün: her öğeyi sıralama anahtarıyla eşleştirin, sıralayın, ardından öğeleri çıkarın. Böylece anahtar her karşılaştırmada yeniden hesaplanmaz.

Yerinde Sıralama ve Kopya

table.sort özgün tabloyu değiştirir. Bir kopyayı sıralamak için önce table.move kullanın veya kopya oluşturmak üzere yineleyin, ardından kopyayı sıralayın.

Karşılaştırıcı Sorusu

Sayıları artan sırada hangi karşılaştırıcı sıralar?

Özet: table.sort

table.sort yerinde sıralar, isteğe bağlı bir karşılaştırıcı kabul eder, kararlı değildir ve karmaşık sıralama gereksinimleri için alan tabanlı veya çok anahtarlı stratejilerle yaygın olarak kullanılır.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Lua öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
40
Dersler
159

Sıkça Sorulan Sorular

“Karşılaştırıcılarla table.sort” dersi ücretsiz mi?

Evet — “Karşılaştırıcılarla table.sort” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Karşılaştırıcılarla table.sort” dersinde ne öğreneceğim?

Tabloları özel karşılaştırıcı işlevleri ve kararlı sıralama stratejileriyle sıralayın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Karşılaştırıcılarla table.sort” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Karşılaştırıcılarla table.sort
  2. table.concat ve table.move
  3. Derin Kopya ve Sığ Kopya
  4. Tabloları Dönüştürme: map, filter, reduce
← Lua Academy Sayfasına Dön