[JS] μλ°μ€ν¬λ¦½νΈ λ°°μ΄ μκ° λ³΅μ‘λ
μλ°μ€ν¬λ¦½νΈ λ°°μ΄ λ©μλμ μκ° λ³΅μ‘λλ₯Ό μμ보μ.
μκ° λ³΅μ‘λλ₯Ό νκΈ°ν λ λμ²΄λ‘ λΉ μ€ νκΈ°λ²μΌλ‘ μ¬μ©νλ€.
λΉ μ€ νκΈ°λ²μ λν΄ κ°λ¨νκ² μ€λͺ νμλ©΄
O(1)
μμ μκ° λ³΅μ‘λμ΄λ€.
function twoUp(num) {
return num+num;
}
numμ μ΄λ€ μκ° λ€μ΄μλ + νλ²μ μ°μ°μ μλνλ€. μ°μ°μ΄ μ¬λ¬ λ² μνλλ μκ° λ³΅μ‘λλ O(1)λ‘ λμΌνλ€.
무νλλ₯Ό κΈ°μ€μΌλ‘ λ΄€μ λ κ·Έλν νμμ λΉμ·νκΈ° λλ¬Έμ λμΌνκ² νκΈ°νλ κ±Έ κ·μΉμΌλ‘ νλ€.
function upupup(num) {
return num+num+num+num+num+num+num+num+num+num+num+num+num+num+num;
}
O(logN)
logNλ§νΌμ μκ° λ³΅μ‘λμ΄λ€. κ°λ¨ν μλ‘ 2κ°μ μμλ Έλλ₯Ό κ°μ§λ μ΄μ§νΈλ¦¬λ₯Ό μ΄μ©ν΄ 8κ°μ λ Έλμ€ μνλ κ°μ λ Έλλ₯Ό μ°Ύλλ€κ³ μκ°ν΄λ³΄μ. κ·ΈλΌ 2κ°μ μμλ Έλλ‘ μΈν΄ 8 => 4 => 2 => 1 μμλ‘ μ°Ύμ μ μμ κ²μ΄λ€. μ΄λ λμ€μ λ°λ‘ μ 리ν΄λ³΄κ² μ΅λλ€.
O(N)
nλ§νΌμ μκ° λ³΅μ‘λμ΄λ€. κ°λ¨νκ² forλ¬Έμ μκ°νλ©΄ λλ€.
function count(num) {
let count = 0;
for(let i = 1; i <= num; i++){
if(i%2 === 1) {
count += 1;
}
}
return count;
}
O(1)κ³Ό λ€λ₯΄κ² numμ΄ 10,000μ΄λΌλ©΄ 10,000λ² μννκ³ , 1,000,000μ΄λΌλ©΄ 1,000,000λ² μννλ€. μ¦ numλ§νΌ μννλ―λ‘ O(n)μΌλ‘ νκΈ°ν μ μλ€. λ§μ°¬κ°μ§λ‘ 4κ°μ forλ¬Έμ΄ μμ΄λ O(4n)μ΄ μλλΌ κ·Έλ₯ O(n)μΌλ‘ νκΈ°νλ€.
O(NlogN)
N*logNλ§νΌμ μκ° λ³΅μ‘λ, λ°μμ μ λ ¬ ννΈμμ μ€λͺ νκ² μ΅λλ€.
O(N^2)
n^2λ§νΌμ μκ° λ³΅μ‘λ λνμ μΌλ‘ 2μ€ forλ¬Έμ΄ μλ€.
function matrix(num) {
const mat = [];
for(let i = 0; i < num; i++){
const row = [];
for(let j = 0; j < num; j++) {
row.push([i,j]);
}
mat.push(row);
}
}
μ μ½λμμ numμ΄ 1000μ΄λΌ μκ°ν΄λ³΄μ, μΌν λ΄λ 1,000,000λ² μ€νλλ€λ κ±Έ μ μ μλ€. λ€λ₯Έ 볡μ‘λμ λΉν΄ λ§μ μκ°μ΄ 걸리λ―λ‘
μνμ 곡μ λ±μ νμ©ν΄ ν¨μ¨μ μΌλ‘ μ¬μ©νλ κ² μ’λ€.
λ°°μ΄μμμ μκ° λ³΅μ‘λ
μ°μ λ°°μ΄μμ μ°λ¦¬κ° μμ£Ό μ¬μ©νλ ν¨μ λ° λ©μλλ€μ μ΄ν΄λ³΄μ.
push | λ°°μ΄μ 맨 λμ κ°μ μ½μ νλ€. |
pop | λ°°μ΄μ 맨 λμ κ°μ μμ νλ€. |
shift | λ°°μ΄μ 맨 μμ κ°μ μ½μ νλ€. |
unshift | λ°°μ΄μ 맨 μμ κ°μ μμ νλ€. |
concat | λ°°μ΄μ μ΄μ΄μ€λ€. |
slice | λ°°μ΄μ μ§μ ν΄λμ μμλΆλΆμΌλ‘ μλ₯Έλ€. |
splice | λ°°μ΄μ μ§μ ν΄λμ μΈλ±μ€μ κ°λ€μ μΆκ°νκ±°λ, μλ₯Έλ€. |
sort | λ°°μ΄μ μ λ ¬νλ€. |
forEach, map, filter, reduce | λ°°μ΄μ μ¬μ©νλ μ£Ό λ©μλ λ€ |
push, pop : O(1)
λ°°μ΄μ μ°λ¦¬κ° μλ€μνΌ μΈλ±μ€λ₯Ό κ°μ§λ€. 첫 μμμ 0, λμ μΈλ±μ€ κ°μ λ°°μ΄μ κΈΈμ΄ -1μ΄λ€. push, popμ λ°°μ΄μ 맨 λμ κ°μ μΆκ° λ° μμ νλ―λ‘ μΈλ±μ€ νλλ§ μ§μ ν΄μ£Όκ±°λ μμ νλ©΄ λλ€. μκ° λ³΅μ‘λλ O(1) μ΄λ€.
shift, unshift : O(N)
μμλ€ κ°μ μ½μ νκ±°λ μμ νλ shift, unshiftλ λ°°μ΄μ μΈλ±μ€μ λ§μ μν₯μ λΌμΉλ€. μλ‘ μμ κ°μ μΆκ°νλ€κ³ μκ°ν΄λ³΄μ.
[ 1, 2, 3, 4, 5 ]
0 1 2 3 4
ν΄λΉ λ°°μ΄ μμ 0 κ°μ μΆκ°νλ©΄ μΈλ±μ€λ μμΌλ‘ ν μΉΈμ© λ°λ¦¬κ³ λ€μ νλκ° μΆκ°λ κ²μ΄λ€.
[ 0, 1, 2, 3, 4, 5 ]
0 1 2 3 4 5
μ΄λ κ² κ°μ μμ μΆκ°ν¨μΌλ‘ μΈν΄ μ 체 μΈλ±μ€κ° λ°λλ―λ‘ μκ° λ³΅μ‘λλ O(N) μ΄λ€.
concat, slice, splice : O(N)
λ°°μ΄μ μ΄μ΄μ£Όκ³ , μλ₯΄κ³ , κ°μ μΆκ°νλ©΄ μΈλ±μ€λ₯Ό μ‘°μ ν΄μ€μΌνλ―λ‘ O(N)μΌλ‘ μκ°νλ©΄ νΈνλ€.
forEach, map, filter, reduce : O(N)
λ°°μ΄μ λ©μλλ κ²°κ΅ λ°°μ΄μ κΈΈμ΄λ§νΌ λ°°μ΄μ μνν΄μΌνλ―λ‘ O(N)μΌλ‘ μκ°νλ©΄ λλ€.
sort : O(NlogN)
μΈμκ°μΌλ‘ λμ΄μ¨ ν¨μμ λ°λΌ κ°μ μ λ ¬νλ€. κΈ°λ³Έμ μΌλ‘ λ΄μ₯ sortλ₯Ό μ¬μ©ν λ ν¬λ‘¬μμ ν΅ μ λ ¬μ μ¬μ©νλ€.
νκ· μ μΌλ‘ NlogNμ μκ° λ³΅μ‘λλ₯Ό κ°μ§λ€. μμΈν 건 λ€μμ μ λ ¬μ λν μκ°λ³΅μ‘λλ₯Ό μμλ³Ό λ ν¬μ€ν νλλ‘ νκ² μ΅λλ€.
const arr = [1,26,76,85,3];
arr.sort((a, b) => a - b);
console.log(arr) // [1, 3, 26, 76, 85]
λ°°μ΄μ λ΄μ₯ ν¨μ λ° λ§€μλμ λν μκ° λ³΅μ‘λλ₯Ό μμλ΄€λ€. μ λ§ν΄μ shift, unshift보λ€λ push, popμ μ΄μ©νλ κ² μκ°μ μΌλ‘ μ 리ν κ±Έ μ μ μλ€.