Merge Sort
π μ΄μ§ νμ νΈλ¦¬ κ°λ
μ΄μ§ νμ νΈλ¦¬λ μμμ ν€λ₯Ό κ°μ§ μμλ₯Ό μ½μ
, μμ , κ²μ λ±μ νκΈ°μ ν¨κ³Όμ μΈ μλ£κ΅¬μ‘°μ΄λ€. λͺ¨λ μ°μ°μ key
(node) κ°μ κΈ°μ΄λ‘ μ€ννλ©°, 2κ° μ΄μμ κ°μ keyκ°μ νμ©νμ§ μλλ€.
μ΄μ§ νΈλ¦¬λ κ³΅λ°±μ΄ μλ μμ λ€μκ³Ό κ°μ 쑰건λ€μ λ§μ‘±νλ€.
- λͺ¨λ λ Έλλ μμ΄ν ν€λ₯Ό κ°μ§.
- μΌμͺ½ μλΈ νΈλ¦¬ λ Έλλ€μ ν€λ 루νΈμ ν€λ³΄λ€ μμμΌ νκ³ , μ€λ₯Έμͺ½ μλΈ νΈλ¦¬ λ Έλλ€μ ν€λ 루νΈμ ν€λ³΄λ€ μ»€μΌ νλ€.
μμ:
(a): μ΄μ§ νμ νΈλ¦¬κ° μλ / (b): μ΄μ§ νμ νΈλ¦¬ / (c): μ΄μ§ νμ νΈλ¦¬
μ΄μ§ νμ νΈλ¦¬μμμ νμ (μνμ κΈ°μ )
ν€ κ°μ΄ xμΈ μμλ₯Ό νμν λ
μ΄μ§ νμ νΈλ¦¬κ° 곡백μ΄λ©΄, μ€ν¨λ‘ νμμ΄ λλλ€. μμμ 루νΈμμλΆν° μμμ νκ³ , 루νΈμ ν€ κ°μ΄ xμΌλ, νμμ΄ μ±κ³΅νμ¬ μ’
λ£λλ€. ν€κ° xκ° λ£¨νΈμ ν€κ°λ³΄λ€ μμ μ, 루νΈμ μΌμͺ½ μλΈνΈλ¦¬λ§ νμνλ€. ν€κ° xκ° λ£¨νΈμ ν€κ°λ³΄λ€ ν΄ λ, 루νΈμ μ€λ₯Έμͺ½ μλΈνΈλ¦¬λ§ νμνλ€.
βοΈ νμ μκ³ λ¦¬μ¦
searchBST(B, x){
p = B;
if(p == null) return null; // xκ° μμ
if(p.key == x) return p; // νμ μ±κ³΅
if(p.key < x) return searchBST(p.right, x); // μ€λ₯Έμͺ½ μλΈνΈλ¦¬ νμ
else return searchBST(p.right, x); // μΌμͺ½ μλΈνΈλ¦¬ νμ
}
μ΄μ§ νμ νΈλ¦¬μμμ μ½μ
ν€ κ°μ΄ xμΈ μλ‘μ΄ μμλ₯Ό μ½μ
ν λ
xλ₯Ό ν€ κ°μΌλ‘ κ°μ§ μμκ° μλμ§λ₯Ό νμνλ€. νμμ΄ μ€ν¨νλ©΄, νμμ΄ μ’
λ£ λ μ§μ μ μμλ₯Ό μ½μ
νλ€.
βοΈ μ½μ μκ³ λ¦¬μ¦
insertBST(b, x){
p = B;
do{
if(x = p.key) return;
q <- p;
if(x < p.key) p = p -> left;
else p = p -> right;
}while(p != null)
anode = getNode();
anode -> key = x;
anode -> right = null;
anode -> left = null;
if(B == null) B = newNode;
else if(x < q.key) q -> left = newNode;
else q-> right = newNode;
return;
}
μ΄μ§ νμ νΈλ¦¬μμμ μμ
μμ νλ €λ μμμ ν€ κ°μ΄ μ£Όμ΄μ‘μ λ
xλ₯Ό ν€ κ°μΌλ‘ κ°μ§ μμκ° μλμ§λ₯Ό νμνλ€. νμμ΄ μ€ν¨νλ©΄, νμμ΄ μ’
λ£ λ μ§μ μ μμλ₯Ό μ½μ
νλ€.
4. π» μ€ννλ©΄
μ μ½λλ₯Ό μ°Έμ‘°νμλ©΄μ κΆκΈνμ μ μ΄ μλ€λ©΄ μλ λκΈ
λ‘ λ¨κ²¨μ£ΌμΈμ!π