• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

왜 오름차순으로 정렬되는지 궁금합니다.

22.02.18 00:32 작성 조회수 125

0

var point = [40, 100, 70, 21, 99];
      console.log(point.sort()); // 숫자인 경우 문자로 인식한다. 문자열로 인식하면 100이 먼저임 1이기때문에

point.sort(function(a,b){
return a-b
      });
 
안녕하세요 왜 리턴 a-b 했을때 순서대로 정렬되는지 메커니즘이 궁금합니다.
 
 
 

답변 1

답변을 작성해보세요.

1

sort()에 인수로 함수 function(a, b){return a - b}를 전달 했습니다. 이 함수를 통해서 정렬이 되는 과정은 다음과 같습니다.

  1. points의 첫번째와 두번째 요소를 비교합니다. 40 - 100 = -60  이므로 음수입니다. 결과가 음수이므로 두 요소의 위치를 바꾸지 않습니다. [40, 100, 70, 21, 99]

  2. 두번째와 세번째 요소를 비교합니다. 100 - 70 = 30 이므로 양수입니다. 두 요소의 위치를 바꿉니다. [40, 70, 100, 21, 99]

  3. 세번째와 네번째 요소를 비교합니다. 100 - 21 = 79 이므로 양수입니다. 두 요소의 위치를 바꿉니다. [40, 70, 21, 100, 99]

  4. 네번째와 다섯번째 요소를 비교합니다. 100 - 99 = 1 이므로 양수입니다. 두 요소의 위치를 바꿉니다. [40, 70, 5, 21, 99, 100]

  5. 1번에서 4번 과정을 반복적으로 수행하면서 더 이상 요소간의 위치 변경이 없을 때 까지 진행합니다.

최종 적으로 [21, 40, 70, 99, 100] 결과를 얻게 됩니다.