목차
머리말
들어가기 전에
정렬 알고리즘
저번에 포스팅한 정렬 알고리즘에서 버블 정렬과 선택 정렬, 삽입 정렬에 대해 알아 보았다.
효율성
이 세 가지 정렬 알고리즘은 코드가 직관적이긴 하지만 데이터 크기 n에 대한 이중 for 문으로 되어 있기에 굉장히 비효율적이다.
분할 정복 알고리즘
이들의 시간복잡도는 O(n2)이다. 보다 효율적인 정렬 알고리즘을 배우기 위해 분할 정복(Divide and Conquer)에 대해 알아 보자.
배우기 전 알아야 할 개념
재귀
그렇다면 위의 3단계는 어떻게 구현할 수 있을까? 분할과 정복, 통합은 재귀적으로(recursively) 하는 것이다.
따라서 재귀 알고리즘에 대해 먼저 알아야 분할 정복 알고리즘을 제대로 알 수 있다.
분할 정복 알고리즘(Divide and Conquer Algorithm)

Divide and conquer algorithms (article) | Khan Academy
분할 정복은 크게 3단계로 나눌 수 있다.
단계
1. 분할(Divide)
- 주어진 문제(problem)를 같은 형태의 작은 문제(subproblem)로 나눈다.
- 문제가 해결이 가능할 때까지 분할을 재귀적으로(recursively) 반복한다.
2. 정복(Conquer)
충분히 나누어져서 해결 가능한 작은 문제를 재귀적으로 해결한다.
3. 통합(Combine)
작은 문제에서 구한 해답을 서로 합쳐서 본래의 문제에 대한 해답을 도출한다.
- 작성일 2023-03-29 수
- 수정일 2023-12-27 수
'알고리즘 > 분할 정복' 카테고리의 다른 글
퀵 정렬(Quick Sort) in Python (0) | 2023.04.04 |
---|---|
합병 정렬(병합 정렬; Merge Sort) in Python (0) | 2023.03.30 |
댓글