PHpullh
학습 라이브러리/Go/정렬 (sort & slices)

GO · 컬렉션

정렬 (sort & slices)

slices.Sortslices.SortFunc로 슬라이스를 정렬합니다. Go 1.21+의 제네릭 기반 정렬입니다.

컬렉션중급sortslicesbinary-searchcmp

핵심 설명

slices.Sortslices.SortFunc로 슬라이스를 정렬합니다. Go 1.21+의 제네릭 기반 정렬입니다.

Go code

package main

import (
	"cmp"
	"fmt"
	"slices"
)

type Student struct {
	Name  string
	Score int
}

func main() {
	// 기본 정렬
	nums := []int{5, 2, 8, 1, 9}
	slices.Sort(nums)
	fmt.Println(nums) // [1 2 5 8 9]

	// 커스텀 정렬
	students := []Student{
		{"Alice", 90}, {"Bob", 85}, {"Charlie", 95},
	}
	slices.SortFunc(students, func(a, b Student) int {
		return cmp.Compare(b.Score, a.Score) // 내림차순
	})
	for _, s := range students {
		fmt.Printf("%s: %d\n", s.Name, s.Score)
	}

	// 안정 정렬
	slices.SortStableFunc(students, func(a, b Student) int {
		return cmp.Compare(a.Name, b.Name)
	})

	// 이진 검색
	idx, found := slices.BinarySearch(nums, 5)
	fmt.Printf("5 at index %d, found=%t\n", idx, found)
}

학습 팁

slices.SortFunc의 비교 함수는 음수(ab)를 반환합니다. cmp.Compare를 활용하세요.

주의할 점

slices.Sort는 불안정 정렬입니다. 동일한 키의 원래 순서가 중요하면 slices.SortStableFunc를 사용하세요.

자주 묻는 질문

정렬 (sort & slices)란 무엇인가요?

slices.Sort 와 slices.SortFunc 로 슬라이스를 정렬합니다. Go 1.21+의 제네릭 기반 정렬입니다.

정렬 (sort & slices) 학습 시 주의할 점은 무엇인가요?

slices.Sort 는 불안정 정렬입니다. 동일한 키의 원래 순서가 중요하면 slices.SortStableFunc 를 사용하세요.

Continue Learning

Go 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.