
์๊ฐ ๋ณต์ก๋ O(์ ๋ ฅ)
O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(2^2) < O(n!)
์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ์๋ก ์คํ ํ์๊ฐ ๋ง์, ์๊ฐ ๋ณต์ก๋๊ฐ ๋์ ๊ฒ์ด๋ค.
O(1)
var n = [];
// n์ ๊ณ์์ ์ผ๋ก ์ซ์ ๋์
function o1() {
return (n[0] === 0) ? true : false;
}
// ๋ฐ์ดํฐ๊ฐ ์ฆ๊ฐํด๋ ์ function o1 function์ ์ฑ๋ฅ์ ๊ทธ๋๋ก๋ค.
O(n)
let n = [];
for (let i = 0; i < n.length; i++) {
return n[i]
}
// ๋ฐฐ์ด์ n์ ๊ธธ์ด๊ฐ ์ฆ๊ฐํ ๋๋ง๋ค ์ฒ๋ฆฌ ์๊ฐ์ด ์ฆ๊ฐํ๋ค.
์
๋ ฅn๋งํผ ์ถ๋ ฅ์ ๋ฐ๋ณตํ๋ ๋ฐ๋ณต๋ฌธ
O(n^2)
let n = [];
for(let i = 0; i < n.length; i++) {
for(var j = 0; j < n.length; j++) {
console.log(i + j);
}
}
// ๋ฐฐ์ด n์ length๊ฐ ์ฆ๊ฐ ํ ๋๋ง๋ค ์ฒ๋ฆฌ ์๊ฐ ์ ๊ณฑ๋ฐฐ๋ก ์ฆ๊ฐ
๋ฐ๋ณต๋ฌธ ๋ ๊ฐ๊ฐ ์ค์ฒฉ๋์ด ์คํ๋์ด ์์ด, n์ด 10์ด๋ฉด 100๋ฒ์ด ์คํ๋ ๊ฒ.
์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋ณ์๋ ์ ์ธํ๊ณ ํด์ 3n^2+129018์ด ๋๋๋ผ๋ ์ค์ํ ๊ฒ์ ์ต๊ณ ์ฐจํญ
O(log N)
// ๋ฆฌํด์ ์ซ์๋ ๋ช๋ฒ์ ์ค์บ์ ํตํด ๊ฐ์ ์ฐพ๋์ง ๋งํ๋ค.
// k๋ ์ ๋ต, arr = ์ค์บ ๋ฐฐ์ด, s๋ ๋ฐฐ์ด์ ์ฒ์, e๋ ๋ฐฐ์ด์ ๋ง์ง๋ง
var arr = [];
function log(k, s, e) {
for(var i = s; i <= e; i++) {
arr.push(i);
let m = (s+e)/2;
if(arr[m] === k){
console.log(m)
} else if(arr[m] > k) {
return log(k, s, m-1);
} else {
return log(k, m+1, e);
}
}
}
๋ฐ์ดํฐ๊ฐ ์ฆ๊ฐํด๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ์ฐจ์ด๋์ง ์๋๋ค.
์
๋ค์ด ๊ฒ์์ฒ๋ผ, 100์ซ์์ค 50์ ์ฐพ๊ณ ์
์ ์ธ์น๋ฉด ๋ฐ์ ์ซ์๋ ๋ฒ๋ ค์ง๋ ํ์
๋๊ท๋ชจ ์ปฌ๋ ์
์ ์ฒ๋ฆฌํ ๋ ๊ฐ์ฅํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
๋ํ์ ์ผ๋ก ์ด์งํ์(binary search), ํต์ ๋ ฌ, ๋ณํฉ์ ๋ ฌ ๋ฑ์ด ์์
function FindItemBinarySearch(items, match) {
var low = 0,
high = items.length -1;
while (low <= high) {
mid = parseInt((low + high) / 2);
current = items[mid];
if (current > match) {
high = mid - 1;
} else if (current < match) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
const quickSort = list => {
if (list.length < 2)
return list;
let pivot = list[0];
let left = [];
let right = [];
for (let i = 1, total = list.length; i < total; i++){
if (list[i] < pivot)
left.push(list[i]);
else
right.push(list[i]);
}
return [
...quickSort(left),
pivot,
...quickSort(right)
];
};
quickSort([1,2,999,3,4,56,77,8,9,123])
// [1,2,3,4,7,8,56,77,123,999]


'Algorithm > ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Hash ์๊ณ ๋ฆฌ์ฆ (0) | 2023.05.18 |
---|---|
[์ฝ๋ฉ ํ ์คํธ] Programmers - ๋ชจ์์ฌ์ (Javascript) (0) | 2023.05.17 |
[์ฝ๋ฉ ํ ์คํธ] Programmers - ๊ดํธ ๋ณํ(Javascript) (0) | 2023.05.17 |
[์ฝ๋ฉ ํ ์คํธ] Programmers - ๊ตฌ๋ช ๋ณดํธ(Javascript) (0) | 2023.05.17 |
Everyday-algorithm (3) / .sort() (0) | 2022.09.20 |