[알고리즘] 정렬 (sorting)

insung·2025년 10월 2일
0

알고리즘

목록 보기
14/20

정렬 (sorting)

  • 정렬은 데이터(리스트, 배열 등)를 특정 기준에 따라 순서를 재배열하는 알고리즘 혹은 작업이다.

정렬은 왜 필요한가

  • 검색 및 탐색 효율 향상
    • 정렬된 데이터는 이진 탐색 등 빠른 탐색 알고리즘을 적용할 수 있어 효율적이다.
  • 데이터의 가독성 및 관리
    • 정보가 체계적으로 배치되어 데이터의 비교, 분류, 분석 작업이 쉬워진다.
  • 알고리즘에서 필수 과정

각 언어별 정렬

1. 파이썬의 정렬

  • list.sort() : 리스트 자체를 정렬(원본 변경)
  • sorted(iterable) : 정렬된 새로운 리스트 반환(원본 불변)
  • 기본값은 오름차순, reverse=True로 내림차순
  • key 파라미터로 사용자 정의 기준도 적용 가능
nums = [5, 2, 9, 1]
nums.sort()          # [1, 2, 5, 9]
nums.sort(reverse=True)  # [9, 5, 2, 1]

names = ['Tom', 'Jerry', 'Mike']
sorted_names = sorted(names, key=len)  # 길이 기준 정렬 -> ['Tom', 'Mike', 'Jerry']

2. 자바스크립트의 정렬

  • array.sort() 배열 정렬
  • 기본적으로 문자열로 바꾼 후 유니코드 순서로 정렬(숫자/특수케이스 유의)
  • 숫자 정렬시 비교함수를 명시해야 함
const nums = [5, 2, 9, 1];
nums.sort();             // [1, 2, 5, 9] → 같아보이지만, [1,2,5,9,10,20]이면 [1,10,2,20,5,9]가 됨
nums.sort((a, b) => a - b); // 올바른 숫자 오름차순 [1, 2, 5, 9]
nums.sort((a, b) => b - a); // 내림차순 [9, 5, 2, 1]

const names = ['Tom', 'Jerry', 'Mike'];
names.sort((a, b) => a.length - b.length); // 길이 기준 정렬: ['Tom', 'Mike', 'Jerry']

3. 자바의 정렬

  • Arrays.sort(array) : 오름차순, Comparable 인터페이스 기준 정렬
  • Arrays.sort(array, Comparator) : 비교 기준을 줄 수 있음
int[] nums = {5, 2, 9, 1};
Arrays.sort(nums);  // [1, 2, 5, 9]

String[] names = {"Tom", "Jerry", "Mike"};
Arrays.sort(names, Comparator.comparingInt(String::length)); // 길이 기준 정렬
리스트

Collections.sort(list)

list.sort(Comparator)

java
List<String> list = Arrays.asList("Tom", "Jerry", "Mike");
list.sort(Comparator.comparingInt(String::length)); // 길이 기준 정렬

정렬은 프로그래밍의 기본이자 다양한 문제의 출발점이다.
효율적인 정렬 알고리즘과 내장함수를 잘 활용하면 더 빠르고 안정적인 코드를 만들 수 있다.

profile
안녕하세요 프론트엔드 관련 포스팅을 주로 하고 있습니다

0개의 댓글