본문 바로가기

C#

[C#] 정렬 규칙 ,CompareTo함수

1. Sort가 비교값을 해석하는 규칙

Sort는 비교 함수(a, b)가 반환한 값을 이렇게 해석합니다:

  • 음수 (< 0) → a가 b보다 앞에 와야 함
  • 0 → 순서 그대로
  • 양수 (> 0) → a가 b보다 뒤에 와야 함 

즉, 반환값은 항상 첫 번째 인자(a)의 위치 기준으로 해석됩니다.

비교함수는 a.CompareTo(b)일 때 a가 b보다 크면 양수, 작으면 음수를 반환합니다.

2. 오름차순 예시

 
(a, b) => a.CompareTo(b)
  • a = 2, b = 5 → a.CompareTo(b) = -1 (음수)
    a가 앞으로 (즉, 2가 5보다 앞)
  • a = 5, b = 2 → a.CompareTo(b) = 1 (양수)
    a가 뒤로 (즉, 2가 앞으로)

3. 내림차순에서 b.CompareTo(a)

 
(a, b) => b.CompareTo(a)
  • a = 2, b = 5 → b.CompareTo(a) = 5.CompareTo(2) = 1 (양수)
    a가 뒤로 가야 함
    → 결과적으로 b(5)가 앞으로 옴
  • a = 5, b = 2 → b.CompareTo(a) = 2.CompareTo(5) = -1 (음수)
    a가 앞으로
    → 결과적으로 a(5)가 앞으로 유지됨

즉, 비교 기준을 (b.CompareTo(a))로 바꾸면, b가 크면 항상 "a를 뒤로" 보내게 되어
**큰 값(b)**이 앞쪽으로 오게 됩니다.

4. 한 줄 정리

Sort는 "첫 번째 인자(a)" 기준으로 판단하므로,
b.CompareTo(a)는 큰 값이 나오면 a를 뒤로 밀고 b를 앞으로 보내서 내림차순이 됩니다.

'C#' 카테고리의 다른 글

[C#] 값 형식과 참조 형식의 저장 위치  (1) 2025.08.10
[C#] 자료구조 정리 표  (2) 2025.08.10
[C#] 구조체를 쓰는 이유  (1) 2025.08.10
[C#] Boxing과 UnBoxing  (3) 2025.07.25
[C#] Garbage Collector  (2) 2025.07.25