Computer Science/μκ³ λ¦¬μ¦
[μ λ ¬] Bubble Sort
μ΅λ³΅
2020. 4. 21. 00:58
λ²λΈ μ λ ¬μ κ°λ
λ²λΈ μ λ ¬μ΄λ?
μλ‘ μΈμ ν λ μμμ λμλ₯Ό λΉκ΅νκ³ , λ μμμ μμΉκ° λ°λμ΄μΌ νλ€λ©΄ μ리λ₯Ό κ΅ννλ©° μ λ ¬νλ μκ³ λ¦¬μ¦μ΄λ€.
μ ν μ λ ¬κ³Ό κΈ°λ³Έ κ°λ μ΄ μ μ¬νμ§λ§, λ²λΈμ λ ¬μ μ νμ λ ¬κ³Ό λ€λ₯΄κ² SWAPμ΄ κ³μμ μΌλ‘ μΌμ΄λλ€.
λ²λΈ μ λ ¬μ λμ λ°©μκ³Ό ꡬν
λμ λ°©μ
1. n-1κ°μ λ°μ΄ν°μ μμΉλ§ μ°ΎμΌλ©΄ λλ―λ‘ n-1λ² λ°λ³΅νλ€. (n-1κ°μ λ°μ΄ν°μ μμΉκ° μ ν΄μ§λ©΄ λλ¨Έμ§ 1κ°λ μλ μ λ ¬)
1-1. μμμλΆν° λ²λΈμ²λΌ μ¬λΌκ°λ©° 2κ°μ λ°μ΄ν°μ© μ§μ§μ΄ λΉκ΅νλ€.
1-1-1. 2κ°μ λ°μ΄ν°λ₯Ό λΉκ΅νμ¬ μμΉκ° λ°λμ΄μΌ νλ€λ©΄ SWAPνλ€.
1λ²μ νλ² λ°λ³΅ν λλ§λ€ μ λ ¬λμ§ μμ λ°μ΄ν°λ€ μ€ κ°μ₯ ν° κ°μ΄ λ€λ‘ μ΄λνλ€. (μ¦, λ°λ³΅ νλ² λΉ νλμ λ°μ΄ν°κ° 무쑰건 μ λ ¬λ¨)
ꡬν
for(var i=array.length-1; i>=0; i--) {
for(var j=0; j<i; j++) {
if(array[j] > array[j+1]) {
SWAP(j, j+1);
}
}
}
function SWAP(x, y) {
var temp = array[x]
array[x] = array[y];
array[y] = temp;
}
μ¬μ¬ν΄μ μλ°μ€ν¬λ¦½νΈλ‘ ꡬν!
Big-O
λΉκ΅ νμ
- μ΅μ, μ΅μ , νκ· λͺ¨λ μΌμ ν¨ (μ λ ¬μ΄ λμ΄μλ μλλ νμ 2κ°μ μμλ₯Ό λΉκ΅νκΈ° λλ¬Έμ)
- n-1, n-2, ...., 2, 1 λ² μ΄λ£¨μ΄μ§κΈ° λλ¬Έμ μ΄ n(n-1)/2λ² μΌμ΄λ¨
κ΅ν νμ
- λ§μ½ μ λ ₯ λ°μ΄ν°κ° μμμΌλ‘ λμ΄λμ΄ μλ κ²½μ°, SWAP μ°μ°μ λΉκ΅ νμλ§νΌ μΌμ΄λ¨
- SWAP μ°μ°μ 3λ²μ μ΄λμ΄ νμνλ―λ‘ μ΄ μ°μ° μλ 3 * n(n-1)/2
- λ°λΌμ T(n) = O(n^2)
λ²λΈ μ λ ¬μ μ₯λ¨μ
μ₯μ
- μκ³ λ¦¬μ¦ μμ²΄κ° λ§€μ° κ°λ¨νλ―λ‘ λ€λ₯Έ 볡μ‘ν μ λ ¬ λ°©λ²λ³΄λ€ ꡬνμ΄ λ§€μ° κ°λ¨νλ€.
- λ°°μ΄ μμμ κ΅ννκΈ° λλ¬Έμ μΆκ° λ©λͺ¨λ¦¬κ° νμνμ§ μλ€.
- Stable Sortμ΄λ€.
λ¨μ
- μΈμ ν μμμ λΉκ΅ ν λ°λ‘ SWAPμ΄ μΌμ΄λκΈ° λλ¬Έμ λ§μ SWAP μ°μ°μ΄ μνλλ€.