์ ํ ์ ๋ ฌ์ด๋ ๋ฌด์์ผ๊น?
์ ํ ์ ๋ ฌ์ด๋ ์ ๋ ฌ์ด ๋์ง ์์ ์ ์ฒด ๋ฐ์ดํฐ ์ค์์ ํด๋น ์์น์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ์ฌ ์์น๋ฅผ ๊ตํํ๋ ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์๋์ ๊ฐ์ ์ ์ฐจ๋ก ์งํ๋ฉ๋๋ค.
- 1) ์ฃผ์ด์ง ๋ฐ์ดํฐ ๋ฆฌ์คํธ ์ค์์ ์ ์ผ ์์ ๊ฐ์ ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค.
- 2) ์ฐพ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ฒ์์ ์์นํ ๋ฐ์ดํฐ์ ์์น์ ๊ต์ฒดํ๋ค.
- 3) ๊ฐ์ฅ ์ฒ์ ์์น๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ต์ฒดํ๋ค.
์ด๋ฅผ ์์ฌ ์ฝ๋(Pseudo Code)๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
For i -> 0 to n:
a[i] to a[n-1] ๊น์ง ๋น๊ตํ ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๊ฐ a[j]์ ์๋ค๋ฉด,
a[i] and a[j] swapping
์ ํ ์ ๋ ฌ ์งํ
๊ทธ๋ฆผ์ผ๋ก ์ ํ ์ ๋ ฌ์ ์งํ ๊ณผ์ ์ ์์ธํ ์ดํด๋ด ์๋ค. ์์ ์ํ์ ๋ํ ํฌํจ ์ฌ๋ถ(์ด๊ธฐ ์ํ๋ก ์ฃผ๋๋ ์ ์ฃผ๋๋)์ ๋ฐ๋ผ์ ํ์ ํ์(PASS)๋ฅผ ์ธ๋ ๋ฐฉ์์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.










์ ํ ์ ๋ ฌ ๊ตฌํ
์ ๊ณผ์ ์ ์์ค ์ฝ๋๋ฅผ ํตํด ์ดํด๋ด ์๋ค.
void selectionSort(int *list, const int n)
{
int i, j, indexMin, temp;
for (i = 0; i < n - 1; i++)
{
indexMin = i;
for (j = i + 1; j < n; j++)
{
if (list[j] < list[indexMin])
{
indexMin = j;
}
}
temp = list[indexMin];
list[indexMin] = list[i];
list[i] = temp;
}
}
์ ํ ์ ๋ ฌ์ ์ฑ๋ฅ
๋ณต์ก๋๋ฅผ ์ดํด๋ณผ๊น์? ์ต์ (min), ํ๊ท (ave), ์ต์ (max)์ ๊ฒฝ์ฐ์ผ ๋ ์ ๋ ฌ์ ์ํ ๋น๊ต ํ์๋ฅผ C๋ผ๊ณ ํ๋ฉด ์๋์ ๊ฐ์ด ๋ํ๋ผ ์ ์์ต๋๋ค.
\[{ C }_{ min }{ =C }_{ ave }={ C }_{ max }=\sum _{ i=1 }^{ N-1 }{ N-i } =\frac { N(N-1) }{ 2 } =O({ n }^{ 2 })\]์ฌ๊ธฐ์ N์ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๋ํ๋ ๋๋ค.