Lua Academy · 강의

비교 함수와 table.sort

사용자 지정 비교 함수와 안정 정렬 전략으로 테이블을 정렬합니다.

레슨 1/413개 단계

비교 함수와 table.sort은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

table.sort란 무엇인가요?

table.sort는 비교 함수를 사용해 테이블을 제자리에서 정렬합니다. 비교 함수를 지정하지 않으면 < 연산자를 사용합니다.

기본 오름차순 정렬

숫자나 문자열로 이루어진 테이블에 table.sort(t)를 호출하면 오름차순으로 정렬됩니다.

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

사용자 지정 비교 함수

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, ", "))

내림차순 정렬

비교를 반대로 바꾸면 내림차순으로 정렬할 수 있습니다.

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

필드 기준으로 테이블 정렬

특정 필드 키를 기준으로 레코드 배열을 정렬하십시오.

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

다중 키 정렬

기본 키를 기준으로 정렬한 다음, 값이 같은 항목은 보조 키를 기준으로 정렬하십시오.

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

안정성 참고

Lua의 table.sort는 안정적인 정렬을 보장하지 않습니다. 같은 요소가 어떤 순서로든 나타날 수 있습니다. 결정적인 결과가 필요하면 인덱스를 보조 비교 기준으로 사용하십시오.

대소문자를 구분하지 않고 문자열 정렬

비교 함수 안에서 string.lower를 사용해 문자열을 정규화하십시오.

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

키 추출기로 정렬

슈워츠 변환 방식을 사용해 추출한 키를 캐시하면 정렬 중 반복 계산을 피할 수 있습니다.

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

큰 테이블 정렬

매우 큰 테이블에는 슈워츠 변환을 고려하십시오. 각 요소를 정렬 키와 짝지어 정렬한 다음 요소를 추출하는 방식입니다. 이렇게 하면 모든 비교에서 키를 다시 계산하지 않아도 됩니다.

제자리 정렬과 복사본 정렬

table.sort는 원본 테이블을 변경합니다. 복사본을 정렬하려면 먼저 table.move를 사용하거나 반복문으로 복제한 후 복제본을 정렬하십시오.

비교 함수 질문

숫자를 오름차순으로 정렬하는 비교 함수는 무엇인가요?

복습: table.sort

table.sort는 제자리에서 정렬하고 선택적 비교 함수를 받으며 안정적이지 않습니다. 복잡한 정렬 요구 사항에는 필드 기준 또는 다중 키 전략과 함께 흔히 사용됩니다.

무료로 시작

AI 튜터와 함께 Lua을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
40
레슨
159

자주 묻는 질문

“비교 함수와 table.sort” 강의는 무료인가요?

네 — “비교 함수와 table.sort” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“비교 함수와 table.sort”에서 뭘 배우나요?

사용자 지정 비교 함수와 안정 정렬 전략으로 테이블을 정렬합니다. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“비교 함수와 table.sort” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 비교 함수와 table.sort
  2. table.concat과 table.move
  3. 깊은 복사와 얕은 복사
  4. 테이블 변환: map, filter, reduce
← Lua Academy(으)로 돌아가기