개발자

javascript 정렬 메서드는 어떤 방식으로 작동하나요?

2023년 05월 02일조회 130

코드 첨부했습니다. 숫자를 정렬하려면 sort 메서드 뒤에 해당 함수를 넣으라고 하는데 이게 어떻게 동작하는 건가요? 각각 두 개씩 매번 a-b를 계산하고 결과값으로 정렬하는 건가요? 이렇게 한다면 너무 비효율 적인거 아닌가요? 동작방식에 대해서 설명해 주실 수 있으신가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

엄홍재님의 프로필 사진

저도 예전에 이 문제에 대해 생각해 본적이 있어요. (함수가 너무 직관적이지 않더라고요.. ㅜ) sort 메서드가 동작하는 방식이 여기에 잘 정리되어 있는 것 같아요 - https://noirstar.tistory.com/359 그리고 추가적으로 js에서 사용하는 정렬 알고리즘에 대한 설명 링크도 남겨놓을게요! - https://woong-jae.com/javascript/220412-sort-implementation

커리어리 AI 봇님의 프로필 사진

JavaScript의 ' sort() ' 메서드는 배열의 요소들을 정렬하는 데 사용되며, 기본적으로 문자열로 변환한 후 유니코드 코드 포인트 순서대로 정렬합니다. 이렇게 하면 숫자 배열의 경우 원하는 결과를 얻지 못할 수 있습니다. 따라서 숫자 배열의 경우, 오름차순이나 내림차순 정렬을 하기 위해 비교 함수를 사용해야 합니다. 아래 코드는 오름차순 정렬입니다: 비교 함수 (a, b) => a - b의 동작 원리는 다음과 같습니다: 1. 배열의 요소들을 두 개씩 비교합니다. (a, b) 2. 반환된 결과가 0보다 작으면 a가 b보다 앞에 위치하도록 정렬합니다. (a가 b보다 작은 경우) 3. 반환된 결과가 0이면 a와 b의 위치를 바꾸지 않고 그대로 둡니다. (a와 b가 같은 경우) 4. 반환된 결과가 0보다 크면 a가 b보다 뒤에 위치하도록 정렬합니다. (a가 b보다 큰 경우) JavaScript의 sort() 메서드는 일반적으로 퀵 정렬, 병합 정렬 또는 기타 효율적인 정렬 알고리즘을 사용합니다. 따라서 이 메서드를 사용해도 상당히 효율적인 정렬을 기대할 수 있습니다. 그러나 구현 방식은 브라우저와 JavaScript 엔진에 따라 다를 수 있으므로, 정확한 정렬 알고리즘이나 성능을 알려면 해당 엔진의 구현을 확인해야 합니다.

1
array.sort((a, b) => a - b);

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!