μ ν μ λ ¬μ κ°λ
μ ν μ λ ¬μ΄λ?
λ£μ μμΉλ μ΄λ―Έ μ ν΄μ Έ μκ³ , κ·Έ μμΉμ μ΄λ ν λ°μ΄ν°λ₯Ό λ£μμ§ μ ννλ μκ³ λ¦¬μ¦μ΄λ€.
λμ λ°©μ
1. 리μ€νΈ κΈΈμ΄(n)μ -1 λ§νΌ λ°λ³΅νλ€. (μμμλΆν° μμΉλ₯Ό μ νκ² λλ©΄ λ§μ§λ§ κ°μ μλμΌλ‘ μμΉκ° μ ν΄μ§λ€)
1-2. μ νλ μ΅μκ°κ³Ό μ΅μκ°μ΄ λ€μ΄κ° μμΉμ κ°κ³Ό κ΅μ²΄νλ€.
1-1. κ°μ΄ λ€μ΄κ° μμΉλΆν° λ§μ§λ§ κ°κΉμ§ μ΅μκ°μ μ°Ύλλ€.
void sort() {
int min;
// 1. κ°μ΄ λ€μ΄κ° μμΉλ₯Ό μ ννλ λ°λ³΅λ¬Έ
for(int i=0; i<numbers.length-1; i++) {
min = i;
// 1-1. κ°μ΄ λ€μ΄κ° μμΉ λ€μ μλ λ°μ΄ν°λ€ μ€μ μ΅μκ°μ μ°Ύλλ€
for(int j=i; j<numbers.length; j++) {
if(numbers[j] < numbers[min]) min = j;
}
// 1-2. Swap
SWAP(i,min);
}
}
void SWAP(int n1, int n2) {
int temp = numbers[n1];
numbers[n1] = numbers[n2];
numbers[n2] = temp;
}
μ ν μ λ ¬μ μ₯λ¨μ
μ₯μ
- λ°μ΄ν°μ μκ° μ μ κ²½μ° μκ³ λ¦¬μ¦ μμ²΄κ° λ§€μ° κ°λ¨νλ―λ‘ λ€λ₯Έ 볡μ‘ν μ λ ¬ λ°©λ²λ³΄λ€ μ 리ν μ μλ€.
λ¨μ
- μ΄λ€ μν©μ΄λ O(N^2)μ μκ° λ³΅μ‘λλ₯Ό κ°κΈ° λλ¬Έμ νλ₯ν μ±λ₯μ 보μ¬μ£ΌκΈ΄ νλ¬
- stable sort λ°©λ²μ΄κΈ° μλκΈ° λλ¬Έμ, λ κ°μ ν€κ°μ κ°μ§κ³ μ λ ¬μ μλν μ μμ
μκ° λ³΅μ‘λ
1. 리μ€νΈ κΈΈμ΄(n)μ -1 λ§νΌ λ°λ³΅νλ€. (κ°μ΄ λ€μ΄κ° μμΉλ λ§μ§λ§ κ°μ μ μΈν n-1κ°)
1-1. κ°μ΄ λ€μ΄κ° μμΉλΆν° λ§μ§λ§ κ°κΉμ§ μ΅μκ°μ μ°Ύλλ€. → n-1, n-2, n-3 ..... 1
1-2. μ νλ μ΅μκ°κ³Ό μ΅μκ°μ΄ λ€μ΄κ° μμΉμ κ°κ³Ό κ΅μ²΄νλ€.
→ 1 + 2 + 3 + ...... + n-1 = n(n-1)/2
O(n^2)μ΄λ€.
μ΄λ ν μν©μ΄λ μ΅μκ°μ μ°ΎκΈ° μν΄ 1-1. λ₯Ό μννκΈ° λλ¬Έμ μ΅μ , νκ· , μ΅μ μ κ²½μ° λͺ¨λ O(n^2)μ΄λ€.