
sort() 함수를 어떻게 사용하는지는 어느정도 알고 있으나
sort(a, b) => a-b , sort(a, b) => a > b ? 1 : -1 같은 방법으로 사용할 때 작동 원리가 매번 가물가물해서 내가 보기 위해 기록해두려 한다!
sort()의 작동 원리sort() 메서드는 배열의 요소를 정렬할 때, 각 요소 쌍을 비교하여 정렬 순서를 결정한다.
비교 함수의 반환 값에 따른 정렬 규칙
a가 b보다 앞에 와야 함b가 a보다 앞에 와야 함a와 b의 순서 변경 X보통 문자열 정렬할 때 많이 사용
(오름차순은 -1, 1 위치만 바꿔주면 된다.)
a > b가 참이면 -1 반환: a가 b보다 앞에 와야 함a > b가 거짓이면 1 반환: b가 a보다 앞에 와야 함const arr = ["h", "e", "l", "l", "o"];
비교 과정
첫 번째 비교 반복
a = "h", b = "e" )a > b "h" > "e" 참-1 "h"를 "e" 앞에 둠["h", "e", "l", "l", "o"]a = "e", b = "l" )a > b "e" > "l" 거짓1 "l"을 "e" 앞에 둠["h", "l", "e", "l", "o"]a = "e", b = "l" )a > b "e" > "l" 거짓1 "l"을 "e" 앞에 둠["h", "l", "l", "e", "o"]a = "e", b = "o" )a > b "e" > "o" 거짓1 -> "o"를 "e" 앞에 둠["h", "l", "l", "o", "e"]두 번째 비교 반복
a = "h", b = "l" )a > b "h" > "l" 거짓1 "l"을 "h" 앞에 둠["l", "h", "l", "o", "e"]이런식으로 완전히 정렬이 될 때까지 반복한다.
정렬 결과
["o", "l", "l", "h", "e"]
주로 숫자 배열을 정렬할 때 사용
(내림차순은 b-a로 바꿔주면 된다.)
a - b < 0): a를 b보다 앞에 배치a - b > 0): b를 a보다 앞에 배치a - b === 0): 순서 유지const arr = [3, 1, 4, 1, 5, 9];
첫 번째 비교 반복
a = 3, b = 1)a - b 3 - 1 2(양수)b가 앞에 배치 [1, 3, 4, 1, 5, 9]a = 3, b = 4)a - b 3 - 4 -1 (음수)a가 앞에 배치 [1, 3, 4, 1, 5, 9] (변화 없음)a = 4, b = 1)a - b 4 - 1 3 (양수)b가 앞에 배치 [1, 3, 1, 5, 5, 9]a = 5, b = 9)a - b 5 - 9 -4 (음수)a가 앞에 배치 [1, 3, 1, 4, 5, 9] (변화 없음)두 번째 비교 반복 시작
...
정렬이 끝날 때까지 반복
정렬 결과
[1, 1, 3, 4, 5, 9]
따라서 sort()는 비교 함수를 기반으로 정렬 방향을 결정하며,
내부적으로 구현된 정렬 알고리즘에 따라 다를 수 있지만, 일반적으로 비교 교환 반복 으로 작동한다는 걸 알 수 있다.