정렬 알고리즘 정리
버블 정렬(Bubble Sort)
버블 정렬은 인접한 두 요소를 비교하여 정렬하는 가장 기본적인 정렬 알고리즘이다. 가장 큰(또는 작은) 값을 한 번의 반복을 통해 리스트의 끝으로 이동시키는 과정을 반복하여 정렬을 수행한다.
버블 정렬의 동작 방식
- 배열의 첫 번째 요소부터 인접한 두 요소를 비교한다.
- 두 요소의 순서가 잘못되었으면 교환한다.
- 한 번의 반복이 끝나면 가장 큰(또는 작은) 값이 리스트의 끝으로 이동한다.
위 과정을 배열이 완전히 정렬될 때까지 반복한다.
시간 복잡도 쉽게 이해하기
- 최선(O(n)): 데이터가 이미 정렬되어 있을 때는 한 번만 확인하면 끝난다.
- 평균(O(n²)): 대부분의 경우 여러 번 비교하고 교환해야 하므로 시간이 오래 걸린다.
- 최악(O(n²)): 데이터가 완전히 뒤죽박죽이면 가장 많은 비교와 교환이 필요하다.
선택 정렬(Selection Sort)
선택 정렬은 리스트에서 가장 작은(또는 큰) 값을 찾아 앞쪽으로 이동시키는 방식으로 동작하는 정렬 알고리즘이다.
선택 정렬의 동작 방식
- 리스트에서 가장 작은 값을 찾아 첫 번째 요소와 교환한다.
- 두 번째 요소부터 다시 가장 작은 값을 찾아 교환한다.
- 이를 반복하여 전체 리스트를 정렬한다.
시간 복잡도 쉽게 이해하기
- 최선(O(n²)): 정렬이 되어 있어도 모든 요소를 비교해야 하므로 최선도 O(n²)이다.
- 평균(O(n²)): 항상 최소값을 찾아야 하므로 비교가 많이 필요하다.
- 최악(O(n²)): 정렬이 안 되어 있어도 항상 O(n²) 시간이 걸린다.
삽입 정렬(Insertion Sort)
삽입 정렬은 각 요소를 올바른 위치에 삽입하여 정렬하는 방식으로 동작하는 알고리즘이다.
삽입 정렬의 동작 방식
- 두 번째 요소부터 시작하여 앞쪽 요소들과 비교한다.
- 삽입할 위치를 찾아 값을 이동시킨다.
- 이를 반복하여 전체 리스트를 정렬한다.
시간 복잡도 쉽게 이해하기
- 최선(O(n)): 데이터가 거의 정렬되어 있다면 한 번씩만 비교하면 된다.
- 평균(O(n²)): 대부분의 경우 여러 번 삽입해야 하므로 시간이 걸린다.
- 최악(O(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)) |
결론 (정렬 알고리즘 선택하는 방법)
- 데이터가 거의 정렬된 상태라면? → 삽입 정렬이 가장 빠르다.
- 데이터 크기가 작고 간단한 정렬이 필요하면? → 선택 정렬도 괜찮다.
- 정렬을 이해하는 연습용으로는? → 버블 정렬이 쉽다.
버블 정렬 예제 문제
문제: 다음 리스트가 버블 정렬의 Pass 1을 거친 후의 상태는?
입력 배열:
4, 7, 3, 1, 5, 8, 2, 6
버블 정렬 Pass 1 과정:
- (4,7) → 그대로 둠
- (7,3) → 교환 → 4, 3, 7, 1, 5, 8, 2, 6
- (7,1) → 교환 → 4, 3, 1, 7, 5, 8, 2, 6
- (7,5) → 교환 → 4, 3, 1, 5, 7, 8, 2, 6
- (7,8) → 그대로 둠
- (8,2) → 교환 → 4, 3, 1, 5, 7, 2, 8, 6
- (8,6) → 교환 → 4, 3, 1, 5, 7, 2, 6, 8
Pass 1 결과:
4, 3, 1, 5, 7, 2, 6, 8
정답: ③ 4, 3, 1, 5, 7, 2, 6, 8
선택 정렬 예제 문제
문제: 다음 리스트가 선택 정렬의 Pass 1을 거친 후의 상태는?
입력 배열:
5, 3, 8, 4, 2
선택 정렬 Pass 1 과정:
- 전체 배열에서 가장 작은 값 2를 찾음
- 2와 첫 번째 요소 5를 교환 → 2, 3, 8, 4, 5
Pass 1 결과:
2, 3, 8, 4, 5
정답: ① 2, 3, 8, 4, 5
삽입 정렬 예제 문제
문제: 다음 리스트가 삽입 정렬의 Pass 1을 거친 후의 상태는?
입력 배열:
5, 3, 8, 4, 2
삽입 정렬 Pass 1 과정:
- 두 번째 요소 3을 첫 번째 요소 5와 비교
- 3이 더 작으므로 5를 뒤로 이동시키고 3을 삽입 → 3, 5, 8, 4, 2
Pass 1 결과:
3, 5, 8, 4, 2
정답: ② 3, 5, 8, 4, 2
결론
- 버블 정렬은 Pass 1에서 가장 큰 값이 오른쪽으로 이동함
- 선택 정렬은 Pass 1에서 가장 작은 값을 찾아 첫 번째 자리로 이동함
- 삽입 정렬은 Pass 1에서 두 번째 요소를 적절한 위치에 삽입함
'STUDY(개인 기록) > 자격증' 카테고리의 다른 글
| 삼항연산자(정보처리기사) (1) | 2025.02.24 |
|---|---|
| 소프트웨어 공학 (정보처리기사) (0) | 2023.03.29 |