์นดํ
๊ณ ๋ฆฌ ์์
[์๊ณ ๋ฆฌ์ฆ] ์ ํ ์ ๋ ฌ(Selection sort)
Trudy | ์ก์ฐ
2023. 12. 11. 17:35
๐์ ํ ์ ๋ ฌ์ด๋?

1. ์ฃผ์ด์ง ๋ฆฌ์คํธ ์ค์ ์ต์๊ฐ์ ์ฐพ๋๋ค.
2. ๊ทธ ๊ฐ์ ๋งจ ์์ ์์นํ ๊ฐ๊ณผ ๊ต์ฒดํ๋ค(ํจ์ค(pass)).
3. ๋งจ ์ฒ์ ์์น๋ฅผ ๋บ ๋๋จธ์ง ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ต์ฒดํ๋ค.
์ ํ ์ ๋ ฌ์ ์ ๊ท์น์ ๋ฐ๋ผ ์ ๋ ฌ์ด ์ด๋ฃจ์ด์ง๋ค.
์คํ ์์
0 | [9,1,6,8,4,3,2,0] | 0 |
1 | [0,1,6,8,4,3,2,9] | 1 |
2 | [0,1,6,8,4,3,2,9] | 2 |
3 | [0,1,2,8,4,3,6,9] | 3 |
4 | [0,1,2,3,4,8,6,9] | 4 |
5 | [0,1,2,3,4,8,6,9] | 6 |
6 | [0,1,2,3,4,6,8,9] | 8 |
์๊ฐ ๋ณต์ก๋ | ๋น๊ต | ๊ตํ |
์ต์ ์ ๊ฒฝ์ฐ | O(n^2) | O(n) |
์ต์ ์ ๊ฒฝ์ฐ | O(n^2) | O(n) |
ํ๊ท | O(n^2) | O(n) |
์ ํ ์ ๋ ฌ์ ์๊ฐ์ ๋ณต์ก๋๋ O(n^2)์ผ๋ก ์๋๊ฐ ๋๋ฆฐ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ํ์ง๋ง, ๊ตฌํ์ด ๊ฐ๋จํ๋ค๋ ์ฅ์ ์ด ์๋ค.
๋, ๋ฒ๋ธ ์ ๋ ฌ๋ณด๋ค๋ ์ ํ ์ ๋ ฌ์ด ํญ์ ์๊ฐ ๋ณต์ก๋ ์ธก๋ฉด์์ ์ฐ์ํ๋ค.
๐์ ํ ์ ๋ ฌ ๊ตฌํ ์ฝ๋ | Java
static void selectionSort(int[] arr) {
int indexMin, temp;
for (int i = 0; i < arr.length - 1; i++) {
//for๋ฌธ์ผ๋ก ๋ฐฐ์ด์ ๋๋ฉด์ ๋ฐฐ์ด์ ๊ฐ์ฅ ์์ ์์์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์๋
indexMin = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[indexMin]) {
indexMin = j;
}
}
//๊ฐ์ฅ ์์ ์์๋ฅผ ๊ธฐ์ค ์์์ ๋ฐ๊ฟ์น๊ธฐ
temp = arr[indexMin];
arr[indexMin] = arr[i];
arr[i] = temp;
System.out.println("๋ฐฐ์ด: "+Arrays.toString(arr));
}
System.out.println("\n์ ๋ ฌ๋ ์ต์ข
๋ฐฐ์ด: "+Arrays.toString(arr));
}
public static void main(String[] args) {
int[] arr = {5, 1, 9, 7, 2, 3};
selectionSort(arr);
}
๐์คํ ๊ฒฐ๊ณผ

์ถ์ฒ: https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC