JS Sort에 대한 이해..

이태헌·2023년 6월 8일
0
post-thumbnail

알고리즘 문제에 대해서 풀다보면 sort함수를 사용 해야하는 경우가 많이 나오는데 형식적인 올림,내림차순 정리에 대해서만 외워서 알고있다보니 다른 함수를 유연하게 정렬할때 어려움이 있었다. sort함수에 대한 직관적인 분석이 필요하다..!

sort 함수란?

sort()방법은 배열의 요소를 적절한 위치에 위치시킨 후 배열을 되돌려줍니다. 기본적으로는 오름차순으로 정렬된다.

  • 기본 sort() 함수
let arr = [1,5,3,2,8]
arr.sort() /// [1, 2, 3, 5, 8]
  • sort()함수로 오름차순 내림차순 정리하기 (숫자)
let arr = [1,10,6,5,2,5,7]
arr.sort((a,b) => a-b) /// [1, 2, 5, 5, 6, 7, 10]
arr.sort((a,b) => b-a) ///[10, 7, 6, 5, 5, 2, 1]
  • 💡 sort()함수를 돕기 위해서 ab값에 관계에 대해서 설명하자면 비교한 값이
    1. a-b가 < 0 작으면 ab보다 앞에 있고
    2. a-b가 = 0 이면 ab의 순서는 동일하고
    3. a-b가 > 0 이면 ba보다 앞에 있다는 것이다

오름차순 내림차순을 이해하기 위해서는 sort()함수 안의 a , b의 값에 대해서 이해를 해야한다.
오름차순으로 정렬할때 a = 1 , b = 10 이 들어가고 a-b의 값을 구한다 a-b의 값이 -9이고 이 값은 0 보다 작기때문에 1 이 10 보다 앞에 있게 된다.

그래서 처음 정렬값 [1,10,6,5,2,5,7]이 된다
두번째로 a = 10 b = 6 에서 a-b는 4 로 0 보다 크기때문에 6이 10보다 앞에 있게 되므로
두번째 정렬값은 [1,6,10,5,2,5,7]이다.
이런식으로 비교를 끝까지 해 나가면 결과값인 [1, 2, 5, 5, 6, 7, 10]이 나온다

  • ⚙️ 직접 a,b값 로그를 찍어보니 sort 메서드 순서가 좀 이상했는데 sort()함수는 각각 모든 요소에 대해서 비교하는 방식이 아니라고 한다..!
let arr1 = [1,7,5]

arr1.sort((a,b)=>{ 
	if(a > b) return -1;
    if(a < b) return 1;
    else return 0;
})

위의 내용을 이해하였다면 아래의 코드가 이제는 다르게 보일것이다 단순 암기가 아닌 이해의 영역으로 들어왔다!
먼저 ab를 비교해 a가 더 크다면 -1, 즉 음수를 리턴한다. 위의 설명의 1번처럼 0보다 작은 값을 리턴해주면 ab보다 앞으로 가게 되는것이고 부등호의 방향이나 리턴값에 따라서 오름차순 내림차순으로 정리가 가능하다.

0개의 댓글