์ฝ์ ์ ๋ ฌ (Insertion Sort) ์๊ณ ๋ฆฌ์ฆ :
์ ํํ ์์๋ฅผ ๊ทธ๋ณด๋ค ๋ ์์ชฝ์ ์ ๋ ฌ๋ ๋ถ๋ถ์ ์๋ง์ ์์น์ ์ฝ์ ํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ
ํธ๋ผํ ์นด๋๋ฅผ ํ ์ค๋ก ๋์ด๋์ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ
1. ์์ง ์ ๋ ฌ๋์ง ์์ ๋ถ๋ถ์ ์ฒซ๋ฒ์งธ ์์ selection[i]๋ฅผ ์ ํ
2. ์ ๋ ฌ๋ ๋ถ๋ถ์์ selection[i]์ ์๋ง์ ์์น๋ฅผ ์ฐพ์ ์ฝ์
2-1. ์ ๋ ฌ๋ ๋ถ๋ถ์ ์์๋ฅผ ํ์นธ์ฉ ๋ค๋ก ๋ฐ์ด๋ธ๋ค
2-2. ์ ๋ ฌ๋ ๋ถ๋ถ์ ์ผ์ชฝ ๋์ ๋๋ฌํ๊ฑฐ๋ selection[i]๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์๋ฅผ ๋ง๋ ๋ ๊น์ง
2-3. ์๋ง์ ์๋ฆฌ์ selection[i] ์ฝ์
๋ฉ์๋ insertionSort() : ๊ธธ์ด๊ฐ n์ธ ๋ฐฐ์ด a๋ฅผ ์ฝ์ ์ ๋ ฌ
๋งค๊ฐ๋ณ์ : int[] a, int n
- ์ฝ์ ์ ๋ ฌ
void insertionSort(int[] a, int n) {
for(int i = 1; i < n; i++) {
int j;
int tmp = a[i];
for(j = i; j > 0 && a[j-1] > tmp; j--) {
a[j] = a[j-1];
}
a[j] = tmp;
}
}
์ฝ์ ์ ๋ ฌ Insertion Sort :
์ต์ = O(N) , ํ๊ท = ์ต์ = O(N^2)
์์ ํ ์ ๋ ฌ