big O
big Oํ๊ธฐ๋ฒ์ด๋
์ฌ๋ฌ๊ฐ์ง ์ฝ๋๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ์๋ก ๋น๊ตํ๊ณ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐฉ๋ฒ. ํ ๋ง๋๋ก ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๊ธฐํด์ฃผ๋ ํ๊ธฐ๋ฒ
Big-O(๋๋ Big-Oh) ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ
์ฝ๋๋ฅผ ์งค ๋ ์ค์ํ ์
faster?
less memory-intensive?
more readable?
๋์ ๋ ๊ฐ ๊ตฌํ๊ธฐ
// ๋๋ฆฐver
function addUpTo(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
}
var t1 = performance.now();
addUpTo(1000000000);
var t2 = performance.now();
console.log(`Time Elapsed: ${(t2 - t1) / 1000} seconds.`);
// Time Elapsed: 0 seconds.
// ๋น ๋ฅธ ver
function addUpTo(n) {
return (n * (n + 1)) / 2;
}
var time1 = performance.now();
addUpTo(1000000000);
var time2 = performance.now();
console.log(`Time Elapsed: ${(time2 - time1) / 1000} seconds.`);
// Time Elapsed: 0.9598000000119209 seconds.๋น ๋ฅธ ver์ addUpTo(n) ์ n์ ์ด๋ค ์ซ์๊ฐ ์ค๋๋ผ๋ 3๋ฒ์ ์ฐ์ฐ๋ง ํ๋ฉด ๋๋ค.
(n * (n + 1)) / 2; : * + /
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ์๊ฐ์ ๋งค๋ฒ ๊ฑฐ์ ๊ฐ๋ค.
๋น ๋ฅธver O(1)
๋๋ฆฐver O(n)
ex) 1
10n
O(n) ์ฐ์ฐ์ countUpAndDown(n) ์ n๊ฐ์ ๋ฐ์ธ๋ฉ๋๋ค.
ex) 2
์ฌ๊ธฐ์์ big O๋ O(n^2)
big O ํํ ๋จ์ํํ๊ธฐ
O(2n) โ O(n)
O(500) โ O(1)
O(13n^2) โ O(n^2)
O(500)์ ์ฐ์ฐ ๊ฐฏ์๊ฐ ์ด๋ค ์ํฉ์๋ 500๊ฐ๊ฐ ์๋ค๋ ๋ป
๊ณต๊ฐ๋ณต์ก๋
ex 1)
total ๋ณ์์ 0์ด๋ผ๋ ์ซ์ ํ ๋น
i๋ณ์์ 0์ด๋ผ๋ ์ซ์ ํ ๋น
๊ทธ๋ฌ๋ฏ๋ก O(1)๊ณต๊ฐ
ex 2)
arr ์ ๊ธธ์ด๊ฐ 50์ด๋ฉด newArr์ 50์ ๊ธธ์ด๋งํผ ๋ฆฌํดํ๋ค.
์ฐจ์งํ๋ ๊ณต๊ฐ์ ์
๋ ฅ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋น๋กํด์ ์ปค์ง๋ค. ๊ทธ๋ฌ๋ฏ๋ก O(n) ๊ณต๊ฐ
ex 3)
Last updated