sungyup's.

javascript_algorithm / 정렬 알고리즘 / 3.1 Sorting Algorithms

3.1Sorting Algorithms

TL;DR

Sorting

Sorting은 배열이나 컬렉션 안의 항목들을 특정한 기준에 따라 정렬하는 과정을 말한다.

예를 들어:

  • 숫자를 작은 것부터 큰 순서로 정렬하기
  • 이름을 알파벳 순으로 정렬하기
  • 영화 목록을 출시 연도 기준으로 정렬하기

정렬 알고리즘에는 다양한 종류가 있으며, 각각의 장단점이 있기 때문에 상황에 맞는 정렬 방식을 선택하려면 그 원리를 잘 이해하는 것이 중요하다.

JavaScript 내장 정렬: sort()

자바스크립트는 자체적으로 배열에 sort() 메소드를 제공하는데, 이 sort()는 예상과 다른 결과를 부를 수 있다.

javascript
[6, 4, 15, 10].sort(); // [10, 15, 4, 6]

공식문서에 따르면, 자바스크립트의 sort는 해당 배열 원본을 변형시키며, 요소들을 우선 문자열로 바꾸고, UTF-16 코드 단위로 비교하여 정렬한다. 이 방식으론 알파벳은 예상대로 정렬할 수 있지만, 숫자들은 일반적인 우리의 예상과는 다르게 정렬된다.

대신, sort 메소드는 비교 함수(comparator)를 파라미터로 받을 수 있다. 비교함수를 직접 정의함으로 원하는 방식의 정렬이 가능해진다.

javascript
function numberCompare(num1, num2){ return num1 - num2 } [6, 4, 15, 10].sort(numberCompare); // [4, 6, 10, 15]