
๋ฌธ์ 1: ์ค๋ฆ์ฐจ์ ์ ํ ์ ๋ ฌ
๋ค์๊ณผ ๊ฐ์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก๋ค.
[10, 3, 8, 15, 6]
๋ฌธ์ : ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ผ.
์ถ๋ ฅ ์์ :
[3, 6, 8, 10, 15]
<๋์ ๋ต์>
import java.util.Arrays;
public static void selctionArrays (int[] arr){
int n = arr.length;
for(int i = o; i < n-1; i++) {
int minIndex = i;
for(int j = i+1; j < n; j++) {
if(arr[j] < arr[minIndex]){
minIndex = j
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
<์ฑ์ >
๋ฌธ์ ์ 1. ๋ฉ์๋ ์ด๋ฆ ์๋ชป ์ฌ์ฉ
public static void selectionSort (int[] arr) {
๋ฉ์๋ ์ด๋ฆ์ด selctionArrays ๋ก ์์ฑ๋๋ค.
selectionSort์ฒ๋ผ ์ฒ ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ณ ์ณ์ผ ํ๋ค.
๋ฌธ์ ์ 2. for ๋ฃจํ์์ ์๋ฌธ์ o๋ฅผ ์ฌ์ฉ
for(int i = 0; i < n-1; i++) {
์๋ฐ์์๋ ์๋ฌธ์ o์ ์ซ์ 0์ด ๋ค๋ฅด๋ฏ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๋ฌธ์ ์ 3. minIndex = j๋ค์ ์ธ๋ฏธ์ฝ๋ก ์์
minIndex = j;
๋ชจ๋ ์ฌ์ํ ์คํ์ ;๋ฅผ ๋ถ์ด์ง ์์์ ํ๋ ธ๋ค.
์ฌ์ํ ์ค์๋ผ๋ ๊ธฐ๋กํ์ฌ ์๋ฒฝํ ์ฝ๋๋ฅผ ๊ตฌ์ฌํด์ผ์ง!
<๋ง๋ถ์ผ ํ ์คํธ ์ฝ๋>
public static void main(String[] args) {
int[] arr = {10, 3, 8, 15, 6};
selectionSort(arr);
System.out.println(Arrays.toString(arr));
<์ ๋ต ์ฝ๋>
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]) {
minIndex = j;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
public static void main(String[] args) {
int[] arr = {10, 3, 8, 15, 6};
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}
}
์ถ๋ ฅ ๋ฐฐ์ด:
[3, 6, 8, 10, 15]
๋ฌธ์ 2: ๋ด๋ฆผ์ฐจ์ ์ ํ ์ ๋ ฌ
๋ค์๊ณผ ๊ฐ์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก๋ค.
[12, 4, 9, 16, 7]
๋ฌธ์ : ๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ผ.
์ถ๋ ฅ ์์ :
[16, 12, 9, 7, 4]
< ๋์ ๋ต์ >
import java.util.Arrays;
public static void selectionSort(int[] arr) {
int num = arr.length;
for (int i = 0; i < n-1; i++) {
int maxIndex = i;
for (int j = i+1; j < n ; j++) {
if (arr[j] > arr[maxIndex]) {
maxIndex = j;
}
}
int temp = arr[maxIndex];
arr[maxIndex] = arr[j];
arr[j] = arr[maxIndex];
}
}
<์ฑ์ >
๋ฌธ์ ์ 1: ๋ณ์ ์ด๋ฆ ํผ๋ (num๊ณผ n)
int num = arr.length;
for (int i = 0; i < num-1; i++) {
- ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ ์ฅํ ๋ณ์ ์ด๋ฆ์ด num์ธ๋ฐ, for ๋ฃจํ์์ n์ ์ฌ์ฉํ๊ณ ์๋ค.
- n์ ์ ์ธ๋์ง ์์ ๋ณ์์ด๋ฏ๋ก ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๋ฌธ์ ์ 2: arr[j]์ arr[maxIndex] ๊ตํ ์ค๋ฅ
int temp = arr[maxIndex];
arr[maxIndex] = arr[i];
arr[i] = temp;
<์ ๋ต ์ฝ๋>
import java.util.Arrays;
public class SelctionSort {
public static void selectionSortDescending(int[] arr) {
int num = arr.length; //๋ฐฐ์ด ๊ธธ์ด ์ ์ฅ
for (int i = 0; i < num-1; i++) {
int maxIndex = i; // ํ์ฌ ์์น๋ฅผ ์ต๋๊ฐ ์ธ๋ฑ์ค๋ก ๊ฐ์
for (int j = i+1 ; j < num; j++){
if (arr[j] > arr[maxIndex]) {
maxIndex = j;
}
}
int temp = arr[maxIndex];
arr[maxIndex] = arr[i];
arr[i] = temp;
}
}
public static void main(String[] args) {
int[] arr = {12, 4, 9, 16, 7};
selectionSortDescending(arr);
System.out.println(Arrays.toString(arr));
}
}
<์ถ๋ ฅ ๋ฐฐ์ด>
[16, 12, 9, 7, 4]
๋ฌธ์ 3 : ๋ฌธ์์ด ๋ฐฐ์ด ์ ๋ ฌ
๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด ๋ฐฐ์ด์ด ์ฃผ์ด์ก๋ค.
String[] arr = {"grape", "apple", "banana", "cherry", "fig"};
๋ฌธ์ : ๋ฌธ์์ด ๋ฐฐ์ด์ ์ํ๋ฒณ ์์(์ค๋ฆ์ฐจ์)๋ก ์ ๋ ฌํ์์ค
<์ถ๋ ฅ์์>
["apple", "banana", "cherry", "fig", "grape"]
๋ฌธ์ ํ์ด ํํธ
๋ฌธ์์ด์ ๋น๊ตํ ๋๋ compareTo ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- a.compareTo(b):
- a๊ฐ b๋ณด๋ค ์์ ์์ผ๋ฉด ์์๋ฅผ ๋ฐํ.
- a๊ฐ b๋ณด๋ค ๋ค์ ์์ผ๋ฉด ์์๋ฅผ ๋ฐํ.
- a์ b๊ฐ ๊ฐ์ผ๋ฉด 0์ ๋ฐํ.
import java.util.Arrays;
public class SelctionSortStrings {
public static void selectionSort(String[] 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].compareTo(arr[minIndex]) < 0) {
minIndex = j; // ๋ ์์๋ ๋ฌธ์์ด์ด๋ฉด ์ต์๊ฐ ๊ฐฑ์
}
}
//์ต์๊ฐ๊ณผ ํ์ฌ ์์น ๊ฐ ๊ตํ
String temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
public static void main(String[] args) {
String[] arr = {"grape", "apple", "banana", "cherry", "fig"};
System.out.println("Before Sorting: " + Arrays.toString(arr));
selectionSort(arr);
System.out.println("After Sorting: " + Arrays.toString(arr));
}
}
1. ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ์ก๋๋ค.
2. ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด ์ดํ์ ๋ฌธ์์ด๋ค์ ๋น๊ตํ์ฌ ๊ฐ์ฅ ์์ ์ค๋(์ํ๋ฒณ ์์์ ์์) ๋ฌธ์์ด์ ์ฐพ๋๋ค.
3. ์ฐพ์ ๋ฌธ์์ด๊ณผ ๊ธฐ์ค ๋ฌธ์์ด์ ๊ตํํ๋ค.
4. ๋ ๋ฒ์งธ ๋ฌธ์์ด๋ก ์ด๋ํ์ฌ ๋์ผํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
5. ๋ฐฐ์ด์ ๋๊น์ง ๊ฐ๋ฉด ๋ชจ๋ ๋ฌธ์์ด์ด ์ํ๋ฒณ ์์๋ก ์ ๋ ฌ๋๋ค.
<์ถ๋ ฅ>
Before Sorting: [grape, apple, banana, cherry, fig]
After Sorting: [apple, banana, cherry, fig, grape]