JavaScript 알고리즘 & 자료구조 마스터클래스 1
big O Notation 빅오 표기법
1. 시간 복잡도(속도)
function addUpToFirst(n) {
let total = 0;
for (let i=1; i<=n; i++) {
total += i;
}
return total;
}
// O(n)
function addUpToSecond(n) {
return n * (n+1) / 2;
}
// O(1)
console.log(addUpToFirst(6));
console.log(addUpToSecond(6));
// 1.실행 시간의 비교
let t1 = performance.now();
// 브라우저가 이 문서를 만든 시간, 이 창이 열린 시간을 알려줌
addUpToFirst(100000000);
let t2 = performance.now();
console.log(`Time Elapsed: ${(t2-t1) / 1000} seconds.`);
// 완전히 신뢰할 수 없는 방식
// 기계마다 사양에 따라 다름
// 같은 기계여도 다른 타임이 기록 됨
// 너무 빠른 알고리즘의 속도 차이를 측정하기 힘듬
// 2. 컴퓨터가 처리해야하는 연산(operation) 갯수 카운팅
// - 정확한 연산 갯수는 중요치 않음, 전체적인 추세가 중요
// - Performence Tracker
function countUpAndDown(n) {
console.log("Going up!");
for (let i = 0; i < n; i++) {
console.log(i);
}
// O(n)
console.log("At the top!\nGoing down...");
for (let j = n; j >= 0; j--) {
console.log(j);
}
// O(n)
console.log("Back down. Bye!");
}
// O(n)
function printAllPairs(n) {
for (var i = 0; i<n; i++) {
for (var J = 0; j < n; j++) {
console.log(i,j);
}
// O(n)
}
// O(n)
}
// O(n\*n) 중첩되어 있으면 제곱2. 공간 복잡도(메모리)
배열과 오브젝트의 성능 평가
Objects
Arrays
Algorithm
Last updated