반응형
시간 복잡도
- O(1) : n의 값이 커지더라도 연산의 개수(=>실행시간)는 변하지 않는다.
- O(n) : n의 값이 커지면 연산의 개수(=>실행시간)도 n개로 변한다.
- O(n²) : O(n) 안에 O(n) 중첩 e.g. 이중 for문
표기법 | 간단 빅 오 표기법 |
---|---|
O(2n) | O(n) |
O(500) | O(1) |
O(13²) | O(n²) |
O(n+10) | O(n) |
O(n² + 5n + 8) | O(n²) |
function logAtLeast5(n) {
for (var i = 1; i <= Math.max(5, n); i++) {
console.log(i);
}
}
- Math.max : 주어진 값 중 가장 큰 값을 반환 => 따라서 n에 값에 따라 for문 안의 연산의 갯수가 n번 실행된다.
즉, O(n)
function logAtMost5(n) {
for (var i = 1; i <= Math.min(5, n); i++) {
console.log(i);
}
}
- Math.min : 주어진 숫자들 중 가장 작은 값을 반환 => 따라서 n의 값이 크더라도 최소 5번만 실행된다.
즉, O(1)
공간복잡도
- Javascript
- Boolean, number, undefined, null 모두 불변으로 똑같은 공간을 차지한다. O(1)
- String O(n)만큼 공간을 차지한다.
- Reference type(arrays, object) 모두 O(n)만큼 공간을 차지한다.
로그(log)
로그는 지수를 다른 방법으로 표현한 것
로그란? (개념 이해하기) | 로그 | Khan Academy
수학, 예술, 컴퓨터 프로그래밍, 경제, 물리학, 화학, 생물학, 의학, 금융, 역사 등을 무료로 학습해 보세요. 칸아카데미는 어디에서나 누구에게나 세계 최고의 무료 교육을 제공하는 미션을 가진
ko.khanacademy.org
본 내용은 udemy - Javascript 알고리즘 & 자료구조 마스터클래스의 강좌 내용을 바탕으로 작성하였습니다.
댓글