728x90
λ²λΈμ λ ¬μ΄λ
- μΈμ ν 2κ°μ λ μ½λλ₯Ό λΉκ΅νμ¬ μμλλ‘ λμ΄ μμ§ μμΌλ©΄ μλ‘ κ΅ννλ λ°©μμ μ λ ¬ μκ³ λ¦¬μ¦
- μ νμ λ ¬κ³Ό κΈ°λ³Έκ°λ μ΄ μ μ¬νλ€
λ²λΈμ λ ¬ κΈ°λ³Έ κ°λ
- λ²λΈ μ λ ¬μ 첫 λ²μ§Έ μλ£μ λ λ²μ§Έ μλ£λ₯Ό, λ λ²μ§Έ μλ£μ μΈ λ²μ§Έ μλ£λ₯Ό, μΈ λ²μ§Έμ λ€ λ²μ§Έλ₯Ό, … μ΄λ° μμΌλ‘ (λ§μ§λ§-1)λ²μ§Έ μλ£μ λ§μ§λ§ μλ£λ₯Ό λΉκ΅νμ¬ κ΅ννλ©΄μ μλ£λ₯Ό μ λ ¬νλ€.
- 1νμ μ μννκ³ λλ©΄ κ°μ₯ ν° μλ£κ° 맨 λ€λ‘ μ΄λνλ―λ‘ 2νμ μμλ 맨 λμ μλ μλ£λ μ λ ¬μμ μ μΈλκ³ , 2νμ μ μννκ³ λλ©΄ λμμ λ λ²μ§Έ μλ£κΉμ§λ μ λ ¬μμ μ μΈλλ€. μ΄λ κ² μ λ ¬μ 1νμ μνν λλ§λ€ μ λ ¬μμ μ μΈλλ λ°μ΄ν°κ° νλμ© λμ΄λλ€.
λ²λΈμ λ ¬ κ³Όμ
- 첫λ²μ§Έ μλ£ 7μ 4μ λΉκ΅νμ¬ κ΅ννκ³ , [κ΅ν]μΉΈμ΄ ν μΉΈ μ΄λλμ΄ 7κ³Ό 5λ₯Ό κ΅ν, 7κ³Ό 1μ κ΅ν μ΄λ°μμΌλ‘ κ΅νν΄λκ°λ©΄ 맨 λ§μ§λ§ μλ£μλ 7μ΄ μ½μ λκ³ 7μ μ λ ¬μλ£ μν
- λ§μ°¬κ°μ§λ‘ 5κ° 1λ²μ²λΌ 7 ν μΉΈ μμ μ½μ λμ΄ 5 7 μ μ λ ¬μλ£ μν
- 4κ° 5 7 μμ μ½μ λμ΄ 4 5 7 μ μ λ ¬ μλ£ μν
- 1κ³Ό 3μ κ·Έλλ‘ μ μ§λκ³ 3 4 5 7μ μ λ ¬ μλ£ μν
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
int main() {
int arr[5] = {9,6,7,3,5};
int i,j;
for(i=4; i>0; i--){
for(j=0; j<i; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i=0; i< 5;i++){
printf("%d ", arr[i]);
}
}
λ²λΈμ λ ¬ νΉμ§ λ° μκ°λ³΅μ‘λ
μ₯μ
- ꡬνμ΄ λ§€μ° κ°λ¨νλ€
λ¨μ
- μμμ λ§μ§ μμ μμλ₯Ό μΈμ ν μμμ κ΅ννλ€.
- νλμ μμκ° κ°μ₯ μΌμͺ½μμ κ°μ₯ μ€λ₯Έμͺ½μΌλ‘ μ΄λνκΈ° μν΄μλ λ°°μ΄μμ λͺ¨λ λ€λ₯Έ μμλ€κ³Ό κ΅νλμ΄μΌ νλ€.
- νΉμ μμκ° μ΅μ’ μ λ ¬μμΉμ μ΄λ―Έ μλ κ²½μ°λΌλ κ΅νλλ μΌμ΄ λ°μν μ μλ€.
- μΌλ°μ μΌλ‘ μλ£μ κ΅ν μμ (SWAP)μ΄ μλ£μ μ΄λ μμ (MOVE)λ³΄λ€ λ 볡μ‘νκΈ° λλ¬Έμ λ²λΈ μ λ ¬μ λ¨μμ±μ λΆκ΅¬νκ³ κ±°μ μ°μ΄μ§ μλλ€.
μκ°λ³΅μ‘λ
μ΄λνμ
μ λ ₯ μλ£κ° μμμΌλ‘ μ λ ¬λμ΄ μλ μ΅μ μ κ²½μ°,
ν λ² κ΅ννκΈ° μνμ¬ 3λ²μ μ΄λ(SWAP ν¨μμ μμ
)μ΄ νμνλ―λ‘ (λΉκ΅ νμ * 3) λ² = 3n(n-1)/2
μ
λ ₯ μλ£κ° μ΄λ―Έ μ λ ¬λμ΄ μλ μ΅μμ κ²½μ°, μλ£μ μ΄λμ΄ λ°μνμ§ μλλ€.
O(N^2)
728x90