알고리즘/자료구조(Data Structure)

07 분할정복

시간복잡도:

fastsum()과 recursivesum()이 종료하는 데 걸리는 시간은 함수 호출 횟수에 비례.

즉, recursivesum()은 n번의 함수호출

fastsum()은 호출될때마다 최소한 두 번에 한 번 꼴로 n이 절반으로 줄어든다.

따라서 두 값의 상한은 모두 logn이므로 O(logn)!

부적절한 경우) 절반으로 나누는 알고리즘이 큰 효율 저하 불러오는 이유:

여러 번 중복되어 계산되면서 시간 소모 (=overlapping subproblems)

(→ 이런 경우는 8장 동적계획법으로 해결)

대표적 예제) 병합 정렬 Merge Sort