[자료구조/알고리즘] 정렬(Sort) 알고리즘

Eunji Lee·2023년 2월 4일
0
post-thumbnail

정렬(Sorting)

의미

어떠한 순서로 컬렉션(ex. array)의 요소를 재배치하는 과정

예시

  • 오름차순/내림차순으로 숫자 정렬하기
  • 알파벳 순서로 문자 정렬하기
  • 개봉일 기준으로 영화 정렬하기

활용

  1. 각종 데이터 목록을 정리하고 싶을 때
  2. 분포도의 중위값을 알아내고 싶을 때
  3. 데이터에서 중복값을 잡아내고 싶을 때
  4. 이진 탐색을 하고 싶을 때

Array.prototype.sort()

배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환하는 메서드

특징

주의사항

  • 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따름
    • 배열의 각 요소를 문자열로 변환하고, 각 문자의 유니코드 코드 포인트 값에 따라 정렬
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months); // ["Dec", "Feb", "Jan", "March"]

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers); // [1, 100000, 21, 30, 4]

매개변수

compareFunction(Optional): 정렬 순서를 정의하는 함수

리턴

정렬한 배열이 리턴되며, 배열의 복사본이 만들어지는 것이 아니라 원본 배열이 정렬되어 리턴됨

compareFunction 사용하기

  • compareFunction이 제공되면 배열 요소는 compare 함수의 반환 값에 따라 정렬됨
  • a와 b가 비교되는 두 요소일 때,
    • compareFunction(a, b)이 0보다 작은 경우 a 다음 b 순서로 정렬
    • compareFunction(a, b)이 0을 반환하면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬함
    • compareFunction(a, b)이 0보다 큰 경우 b 다음 a 순서로 정렬

오름차순으로 숫자 정렬하기

const numbers = [5, 3, 2, 1, 4];
numbers.sort((a,b) => a - b);
console.log(numbers); //[1, 2, 3, 4, 5]

내림차순으로 숫자 정렬하기

const numbers = [5, 3, 2, 1, 4];
numbers.sort((a,b) => b - a);
console.log(numbers); //[5, 4, 3, 2, 1]


참고사이트
MDN, Array.prototype.sort()

0개의 댓글