Udemy에서 Colt Steele의 JavaScript Algorithm & Data Structures MasterClass를 수강하면서 정리한 내용입니다.
function addUpTo(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
}
console.time('test');
console.log(addUpTo(10000000000));
console.timeEnd('test');
//50000000000067860000
//test: 7.596s
function addUpTo(n) {
return (n * (n + 1)) / 2;
}
console.time('test');
console.log(addUpTo(10000000000));
console.timeEnd('test');
//50000000005000000000
//test: 3.998ms
function addUpTo(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
}
let t1 = performance.now();
console.log(addUpTo(1000000000));
let t2 = performance.now();
console.log(`Time Elapsed: ${(t2-t1) / 1000} seconds.`)
//50000000000067860000
//Time Elapsed: 7.5107000000001864 seconds.
function addUpTo(n) {
return (n * (n + 1)) / 2;
}
let t1 = performance.now();
console.log(addUpTo(10000000000));
let t2 = performance.now();
console.log(`Time Elapsed: ${(t2 - t1) / 1000} seconds.`);
//50000000005000000000
//Time Elapsed: 0.00009999999962747097 seconds.
Performance Tracker로 각 알고리즘의 시간복잡도를 시각화하여 확인해볼 수 있다.
- Performance Tracker
Big O 정의
Time complexity
Space Complexity
Log는 지수(exponentiation)의 역수(inverse)이다.
- 나눗셈과 곱셈이 쌍인 것처럼 로그와 지수도 쌍이다.
The logarithm of a number roughly measures the number of times you can divide that number by 2 before you get a value that's less than or equal to one.
검색
알고리즘에는 로그 시간 복잡도와 관련된다.정렬
알고리즘에는 로그가 관련있다.재귀
는 때때로 로그 공간 복잡도와 관련이 있다.