분할정복과 재귀
분할정복 : 복잡하거나 큰 문제를 여러 개(병렬적으로)로 나눠서 푸는 방법
분할정복 방법 진행중에 재귀가 사용될 수 있다.
분할정복과 재귀 코드비교
# 재귀 : 1부터 10까지의 합
def func(num):
if num < 1:
return 0
else:
return num + func(num-1)
func(10)
##########################
# 분할정복 : 1부터 10까지의 합
def func(num):
if num == 1:
return 1
if num % 2 == 1:
return func(num - 1) + num
else:
return func(num / 2) * 2 + (num / 2) * (num / 2)
func(10)
퀵정렬과 병합정렬의 비교
퀵정렬
: 퀵정렬은 처음에 전체 탐색을 할 때 좌우로 나눠서 재귀적으로 수행하기 때문에 병합정렬보다 빠르다.
(빠르지만 성능편차가 크고 병합정렬보다 덜 안정적이다)
병합정렬
: 병합정렬은 분할과 교체를 반복(1개의 서브리스트가 나올때까지)
반복문을 통해 비교->정렬->교환 후 합치는 과정을 연속적으로 진행
728x90
'AI월드 > ⚙️AI BOOTCAMP_Section 5' 카테고리의 다른 글
해시, 해시테이블, 해시충돌이란? (0) | 2021.05.21 |
---|---|
메모이제이션(Memoization) (0) | 2021.05.18 |
선택정렬, 삽입정렬, 버블정렬 (0) | 2021.05.17 |
탐색 알고리즘(선형검색, 이진검색) (0) | 2021.05.17 |
정렬알고리즘의 필요성과 버블소트(거품정렬)의 이해 (0) | 2021.05.17 |
댓글