
์ ํ์ ๋ ฌ์ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
1. ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ํ๋ฆ
์ ํ ์ ๋ ฌ์ ์ฃผ์ด์ง ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์ ๋ฐฐ์ด์ ๋งจ ์์ ์์น์ํค๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
2. ์๊ณ ๋ฆฌ์ฆ ๋ ผ๋ฆฌ
1) ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ๋ถํฐ ์์ํด์ ๋๋จธ์ง ๊ฐ๋ค ์ค์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ๋๋ค.
2) ์ฐพ์ ๊ฐ์ ํ์ฌ ์์น์ ๊ตํํ๋ค.
3) ๋ค์ ์์น๋ก ์ด๋ํด ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
4) ๋ฐฐ์ด์ ๋๊น์ง ๊ฐ๋ฉด ์ ๋ ฌ์ด ์๋ฃ๋๋ค.
3. ์ ํ ์ ๋ ฌ ๊ตฌํ ์ฝ๋
import java.util.Arrays;
public class SelectionSort {
public static void selectionSort(int[] arr) {
int n = arr.length;
// ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ฐ๋ณต
for (int i = 0; i < n-1 ; i++) {
// ํ์ฌ ์์น๋ฅผ ์ต์๊ฐ์ ์์น๋ก ๊ฐ์
int minIndex = i;
// ํ์ฌ ์์น ์ดํ์ ๊ฐ๋ค ์ค ์ต์๊ฐ ํ์
for (int j= i+1; j < n; j++) {
if (arr[j] < arr[minIndex]){
mimIndex = j; // ๋ ์์ ๊ฐ ๋ฐ๊ฒฌ ์ ์ธ๋ฑ์ค ์
๋ฐ์ดํธ
}
}
// ํ์ฌ ์์น์ ์ต์๊ฐ ์์น๋ฅผ ๊ตํ
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
public static void main(String[] args) {
int[] arr = {9, 6, 7, 3, 5};
System.out.println("Before Sorting: " + Arrays.toString(arr));
selctionSort(arr);
System.out.println("After Sortion:" + Arrays.toString(arr));
}
}
1) ์ซ์ ์นด๋ ์ ๋ ฌ ๊ฒ์
๋์๊ฒ ์ฃผ์ด์ง ์ซ์ ์นด๋ 5์ฅ์ 9, 6 , 7 , 3, 5.
์ด ์นด๋๋ฅผ ์์ ์ซ์๋ถํฐ ์ฐจ๋ก๋๋ก ์ค์ ์ธ์์ผ ํ๋ค.
2) ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ
2.1) ์ฒซ ๋ฒ์งธ ์นด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๋๋ค. (9)
2.2) ์ฒซ ๋ฒ์งธ ์นด๋ ๋ค์์ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ๋๋ค.(3)
2.3) ๊ฐ์ฅ ์์ ์ซ์๋ ์ฒซ ๋ฒ์งธ ์นด๋ ์๋ฆฌ ๋ฐ๊พธ๊ธฐ! ์ด์ ๋ 3์ด ๋งจ ์์ ์จ๋ค.
2.4) ๋๋ฒ์งธ ์นด๋๋ก ๋์ด๊ฐ์ ๋ค์ ๋ฐ๋ณตํ๋ค! ๋ ๋ฒ์งธ ์นด๋ ๋ค์์ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ๋๋ค.(5)
2.5) ์ฐพ์ ์ซ์๋ ์๋ฆฌ ๋ฐ๊พธ๊ธฐ! (3, 5, 7, 9, 6)
2.6) ์ธ ๋ฒ์งธ ์นด๋๋ก ๋์ด๊ฐ์. ๋จ์ ์ซ์๋ค ์ค์์ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ๊ณ ์๋ฆฌ ๋ฐ๊พธ๊ธฐ! (3, 5, 6, 9, 7)
2.7) ๋ง์ง๋ง์ผ๋ก ๋ค ๋ฒ์งธ ์นด๋์ ๋ค์ฏ ๋ฒ์งธ ์นด๋๋ก ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด ๋!
์ ์ผ ์์ ์ซ์ ์ฐพ๊ณ !
๊ทธ ์ซ์๋ ์๋ฆฌ ๋ฐ๊ฟ!
๋ค์ ์นด๋๋ ๋๊ฐ์ด!
๋งจ ๋๊น์ง ๋ฐ๋ณตํด!
3.1 ์คํ ๊ฒฐ๊ณผ
Before Sorting: [9, 6, 7, 3, 5]
After Sortion: [3, 5, 6, 7, 9]
4. ์ ํ ์ ๋ ฌ์ ๋ ผ๋ฆฌ์ ์ฌ๊ณ ์ ์๋ฐ ๋ฌธ๋ฒ ํด์ค
4.1 ์ต์๊ฐ ํ์ - ์นด๋์ ๋ท๋ถ๋ถ์ ์ญ~ ์ดํด๋ณด๋ฉด์ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ๋๋ค.
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
- minIndex : ํ์ฌ ๊ฐ์ฅ ์์ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅ.
- if ์กฐ๊ฑด๋ฌธ์ ํตํด ๋ฐฐ์ด์ ๋๋จธ์ง ๊ฐ๋ค์ ๋น๊ต.
4.2 ๊ฐ ๊ตํ - ์ฐพ์ ์ซ์๋ ์๋ฆฌ ๋ฐ๊พธ๊ธฐ!
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
- ์ ํ ์ ๋ ฌ์์๋ ๊ฐ ๊ตํ์ด ํต์ฌ์ด๋ค.
- ์์ ๋ณ์ temp๋ฅผ ์ฌ์ฉํด ๋ ๊ฐ์ ์์ ํ๊ฒ ๊ตํํ๋ค.
4.3 ์๊ฐ ๋ณต์ก๋
- ์ต์ /์ต์ /ํ๊ท ์๊ฐ ๋ณต์ก๋: O(n^2) (์ด์ค ๋ฐ๋ณต๋ฌธ ๋๋ฌธ).
- ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์๊ฑฐ๋ ์ ๋ ฌ ๊ธฐ์ค์ด ๊ฐ๋จํ ๊ฒฝ์ฐ ์ ์ฉ.