- 알고리즘의 성능을 수학적으로 표현해주는 표기법
- 알고리즘의 실제 러닝 타임을 나타내는 것이 목적이 아닌 데이터, 사용자 증가율에 따른 알고리즘의 성능 예측이 목적
- Big-O에는 시간 복잡도, 공간 복잡도가 있다.
알고리즘을 수행하는데 실행 시간이 아닌 연산 횟수를 숫자로 표기한 것
연산의 횟수를 데이터의 수 n의 함수로 나타낸 것을 시간 복잡도 함수 라고 함
시간 복잡도의 불필요한 연산을 제거하고 데이터 증가에 따른 처리 횟수를 간단하게 보여주기 위한 목적으로 시간 복잡도를 표기하는 방법
최악의 경우를 가정하고 시간의 효율성을 계산하기 때문에 처리할 데이터의 갯수는 충분히 많다고 가정한다.
O(2n), O(3n) => n
O(n^2 + n) => O(n^2)
입력 데이터 크기에 상관없이 동일한 처리 시간이 걸리는 알고리즘
function add(n) {
console.log(n + n);
}
// n의 크기에 상관없이 연산은 한번만 일어나므로 O(1)
입력 데이터 크기에 비례해서 처리 횟수가 비례하는 알고리즘
n이 10이면 10번 !
for (let i = 0; i < n; i++) {
console.log(i)
}
for (let i = 0; i < n; i++) {
console.log(i)
}
for (let j = 0; j < n; j++) {
console.log(j)
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
console.log(i, j);
}
}