시간복잡도:
fastsum()과 recursivesum()이 종료하는 데 걸리는 시간은 함수 호출 횟수에 비례.
즉, recursivesum()은 n번의 함수호출
fastsum()은 호출될때마다 최소한 두 번에 한 번 꼴로 n이 절반으로 줄어든다.
따라서 두 값의 상한은 모두 logn이므로 O(logn)!
부적절한 경우) 절반으로 나누는 알고리즘이 큰 효율 저하 불러오는 이유:
여러 번 중복되어 계산되면서 시간 소모 (=overlapping subproblems)
(→ 이런 경우는 8장 동적계획법으로 해결)
대표적 예제) 병합 정렬 Merge Sort
7.2 문제: 쿼드 트리 뒤집기(QUADTREE, 하)
7.4 문제: 울타리 잘라내기 (FENCE, 중)
7.6 문제: 팬미팅 (FANMEETING, 상)
'알고리즘 > 자료구조(Data Structure)' 카테고리의 다른 글
[자료구조] 비트마스크(BitMask) 알고리즘 (0) | 2021.11.10 |
---|
Uploaded by Notion2Tistory v1.1.0