시간복잡도를 나타내기 위한 방법 중 하나입니다.
위의 차트와 하단 순서만 기억해도 기본적으로 필요한 것을 갖췄다고 할 수 있습니다.
선형시간은 입력받은 크기만큼 루프를 도는 것
for (let i = 0; i < n; i+=1) {
}
로그시간은 입력받은 크기에 로그를 씌운 만큼 루프를 도는 것
for (let i = 1; i <= n; i*=2) {
}
for (let i = 0; i < n; i+=1) {
for (let j = 1; j <= n; j *= 2) {
}
}
for (let i = 0; i < n; i+=1) {
for (let j =0; j < n; j+=1) {
}
}
상수 k가 0보다 클 때 f(n) = O(g(n)) 이면 kf(n) = O(g(n)) 이다.
n이 무한에 가까울 수록 k의 크기는 의미가 없기 때문입니다.
for (let i = 0; i < n; i+=1) {
}
for (let i = 0; i < n * 5; i+=1) {
}
빅오는 더해질 수 있다.
f(n) = O(h(n))이고 g(n) = O(p(n))이면 f(n) + g(n) = O(h(n)) + O(p(n))이다.
for (let i = 0; i < n; i+=1) {
}
for (let i = 0; i < m * 5; i+=1) {
}
빅오는 곱해질 수 있다.
f(n) = O(h(n))이고 g(n) = O(p(n))이면 f(n) g(n) = O(h(n)) O(p(n))이다.
for (let i = 0; i < n; i+=1) {
for (let j = 0; j < n * 5; j+=1) {
}
}
f(n)이 k차 다항식이면 f(n)은 O(n^k)이다.
for (let i =0; i < n * n * n; i += 1) {
}
const start = new Date().getTime();
const end = new Date().getTime();
console.log(end - start);
console.log("Start");
const start = new Date().getTime();
const N = 1000000000;
let total = 0;
for (let i = 0; i < N; i += 1) {
total += i;
}
const end = new Date().getTime();
console.log(end - start);
console.log("Finish");