๋ฐ์ํ
์๋ ํ์ธ์, ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฆฌํ๋ ํฌ์คํ ์ ๋๋ค. ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐธ๊ณ ํ์๋ ค๋ฉด ํด๋น ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ด์ฉํด์ฃผ์ธ์. ๐
์ ํ ์ ๋ ฌ (Selection Sort)
์ ๋ ฌํ์ฌ ์์๋ฅผ ๋ฐฐ์นํ ์๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ ํด๋๊ณ , ํด๋น ์๋ฆฌ์ ๋ฃ์ ์์๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ฝ์ ์ ๋ ฌ๊ณผ ํท๊ฐ๋ฆฐ ์ ๋ ฌ,, ์ ํ ์ ๋ ฌ์ ๋ฃ์ ์๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํ๊ณ , ์ฝ์ ์ ๋ ฌ์ 1 ๋ฒ์งธ๋ถํฐ n๋ฒ์งธ ์์๋ฅผ ์์ ์์์ ๋น๊ตํ๋ฉฐ ์ฝ์ ํด ๋๊ฐ๋ ์ฐจ์ด๊ฐ ์๋ค. (ํท๊ฐ๋ฆผ..)
์๊ฐ ๋ณต์ก๋ : O(N^2)
๊ณต๊ฐ ๋ณต์ก๋ : O(N)
๋ถ์์ ์ ๋ ฌ
๊ณผ์
- ๋จผ์ 1 ๋ฒ์งธ ์๋ฆฌ์ ์ฌ ์์๋ฅผ ์ ํํ ๊ฒ์ ๋๋ค. ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ํ์ํ์ฌ ๊ฐ์ฅ ์์ ์์ 1 ๋ฒ์งธ ์์ ์์น๋ฅผ ๊ตํํฉ๋๋ค.
- ์ด์ 2 ๋ฒ์งธ ์๋ฆฌ์ ์ฌ ์์๋ฅผ ์ ํํ ๊ฒ์ ๋๋ค. ๋ ๋ฒ์งธ ์์๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ํ์ํ์ฌ ๊ทธ ์ค ์ ์ผ ์์ ์์ ์์น๋ฅผ ๊ตํํฉ๋๋ค.
- ์์ ๋์ผ
- ์์ ๋์ผ
- ์ ๋ ฌ์ด ์๋ฃ๋์ต๋๋ค.
Code
- ๋จผ์ ์ ํ ์์น์ ๋ฒ์๋ ์ฒซ ๋ฒ์งธ ์์น๋ถํฐ ๋ง์ง๋ง - 1 ์์น๊น์ง ์ ๋๋ค.
- ๊ทธ ๋ค์ ํด๋น ์์น์ ๋ฃ์ ์์๋ i + 1๋ฒ์งธ๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ์ ๋๋ค.
int temp, min_idx;
for(int i=0; i<arr.length - 1; i++) {
min_idx = i;
for(int j=i + 1; j<arr.length; j++) {
if( arr[min_idx] > arr[j]) min_idx = j;
}
temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
- ๊ฐ์ฅ ์์ ์์์ ์์น๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด min_idx ๋ผ๋ ๋ณ์๋ฅผ ์ด์ฉํฉ๋๋ค.
- ๊ฐ ๋ฒ์์ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ฐพ์์ผ๋ฉด, ์์น๋ฅผ ๊ตํํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ฐ์ํ