Sorting은 데이터를 특정 순서대로 정렬하는 과정을 의미하며, 자료구조에서 중요한 개념 중 하나이다. Sorting 알고리즘은 크게 내부 정렬(Internal Sorting)과 외부 정렬(External Sorting)로 나눌 수 있다.
내부 정렬 (Internal Sorting)
내부 정렬은 모든 데이터를 주 메모리(RAM)에 적재할 수 있는 경우에 사용하는 정렬 방법이다. 주로 사용하는 내부 정렬 알고리즘은 다음과 같다.
버블 정렬 (Bubble Sort)
버블 정렬은 인접한 두 요소를 비교하여 필요에 따라 위치를 바꾸는 과정을 반복하여 정렬하는 알고리즘이다. 가장 큰 요소가 맨 뒤로 "버블"처럼 이동하는 것에서 이름이 유래되었다.
- 특징: 단순하지만 비효율적이다.
- 시간 복잡도: O(n^2)
삽입 정렬 (Insertion Sort)
삽입 정렬은 정렬된 부분과 정렬되지 않은 부분으로 나누어, 정렬되지 않은 요소를 하나씩 정렬된 부분에 삽입하여 정렬하는 알고리즘이다.
- 특징: 데이터 양이 적거나 거의 정렬된 상태에서는 효율적이다.
- 시간 복잡도: O(n^2)
선택 정렬 (Selection Sort)
선택 정렬은 매번 가장 작은 요소를 선택하여 정렬되지 않은 부분의 맨 앞으로 이동시키는 방식으로 정렬하는 알고리즘이다.
- 특징: 단순하지만 비효율적이다.
- 시간 복잡도: O(n^2)
퀵 정렬 (Quick Sort)
퀵 정렬은 기준(pivot)을 설정하고 기준보다 작은 요소는 왼쪽, 큰 요소는 오른쪽으로 분할하는 과정을 재귀적으로 반복하여 정렬하는 알고리즘이다.
- 특징: 평균적으로 매우 빠르다.
- 시간 복잡도: 평균 O(nlogn), 최악 O(n^2)
병합 정렬 (Merge Sort)
병합 정렬은 배열을 절반으로 나누어 각각을 재귀적으로 정렬하고, 두 정렬된 배열을 병합하여 최종 정렬을 완료하는 알고리즘이다.
- 특징: 안정적이고 성능이 좋다.
- 시간 복잡도: O(nlogn)
외부 정렬 (External Sorting)
외부 정렬은 데이터가 너무 커서 주 메모리에 모두 적재할 수 없는 경우에 사용하는 정렬 방법이다. 보조 기억 장치(예: 디스크)를 사용하여 데이터를 정렬한다.
반응형
'IT > Computer Science' 카테고리의 다른 글
[자료구조] Text pattern matching- Naive Approach 방법, 코드 구현 (0) | 2024.06.04 |
---|---|
[자료구조] Heap Sort 개념 (feat. Merge Sort와의 비교) (0) | 2024.06.03 |
[자료구조] Hashing 개념, collision 개념(Ch.05 Hashing) (0) | 2024.06.01 |
[자료구조] B+tree의 구조,장점 (0) | 2024.05.31 |
[자료구조] B-tree & B+tree 비교 (0) | 2024.05.30 |