기억해둘만한 사항 정리
이분탐색 시 left, right index
- while (left + 1 < right) left = mid, right = mid
- while (left <= right) left = mid + 1, right = mid - 1
시간복잡도 계산 방법
master therem
- 나누어지는 문제의 개수: a
- 분할 후 문제의 크기: b
- 각 문제마다 병합 단계에서 걸리는 시간: O()
If T(n) = aT(n/b) + O(nd) for constants a > 0, b > 1, d>=0, then
T(n) = O(nd) if d > logba
O(ndlogn) if d = logba
O(nlogba) if d < logba
ex) T(n) = 2T(n/2) + O(n) => T(n) = O(nlogn)
배열 VS 연결리스트
배열의 장점
- random access 가능해서 특정 인덱스 값을 참조하는데 O(1)
- 연결리스트는 무조건 O(k)
연결리스트의 장점
- k번째 노드 조회(삽입, 삭제 포함) 시 O(k) (k번째 노드 포인터를 알 경우 O(1))
- 배열은 무조건 O(n-k)