
📌 정렬?
데이터를 오름 또는 내림차순으로 재배열하여 데이터들을
효율적으로 탐색하고 처리할 수 있게 만드는 알고리즘
장점
- 검색 효율성 향상: 정렬된 데이터에서는 이진 탐색 등을 사용할 수 있음
- 데이터 분석: 최대값, 최소값, 중간값 등을 쉽게 찾을 수 있음
- 사용자 경험: 사용자가 원하는 순서로 데이터를 보여줄 수 있음기본 정렬들 (O(n²))
- 📌 정렬의 종류
- 버블 정렬: 인접한 원소를 비교하여 교환
- 선택 정렬: 최소값을 찾아 앞으로 이동
- 삽입 정렬: 정렬된 부분에 새 원소를 삽입
효율적인 정렬들 (O(n log n))
- 병합 정렬: 분할 정복 방식, 안정 정렬
- 퀵 정렬: 피벗 기준으로 분할, 평균적으로 가장 빠름
- 힙 정렬: 힙 자료구조 이용, 최악의 경우에도 O(n log n)
복잡도 비교
| 정렬 방법 | 최선 | 평균 | 최악 | 공간복잡도 | 안정성 |
|---|---|---|---|---|---|
| 버블 정렬 | O(n) | O(n²) | O(n²) | O(1) | 안정 |
| 선택 정렬 | O(n²) | O(n²) | O(n²) | O(1) | 불안정 |
| 삽입 정렬 | O(n) | O(n²) | O(n²) | O(1) | 안정 |
| 병합 정렬 | O(n log n) | O(n log n) | O(n log n) | O(n) | 안정 |
| 퀵 정렬 | O(n log n) | O(n log n) | O(n²) | O(log n) | 불안정 |
| 힙 정렬 | O(n log n) | O(n log n) | O(n log n) | O(1) | 불안정 |
📌 문자열을 정렬할 경우
숫자정렬
- 수학적 크기를 직접 비교
- 기본 비교연산자로 간단하게 처리
- 정수 실수 모두 동일한 원리
문자 정렬
- 사전식 순서로 비교
- 문자의 ASCII값이나 유니코드 값을 기준으로 비교
문자 우선순위
공백(32) < ! < " < # < $ < % < & < ' < ( < ) < * < + < , < - < . < / < 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < : < ; < < < = < > < ? < @ < A < B < C < ... < Z < [ < \ < ] < ^ < _ < \` < a < b < c < ... < z < { < | < } < ~
- 숫자
- 대문자
- 소문자
- 한글 가나다순
'Develop' 카테고리의 다른 글
| 싱글링크드리스트 (1) | 2025.07.19 |
|---|---|
| 정렬의 종류 (0) | 2025.07.16 |
| 문자열이란 .. (0) | 2025.07.14 |
| 배열의 의미, 동작방식, 최적화 등등 (0) | 2025.07.13 |
| CS:APP 1장 컴퓨터 시스템으로의 여행 (0) | 2025.07.12 |
