Java/Data Structures
4. 선택정렬
by lchit
2021. 3. 16.
public class SelectionSort {
// 두 인덱스의 벨류를 바꾸는 메서드
// 정렬할 정수 배열과 서로 교체할 인덱스 i, j 를 인자로 받는다
public static void swapElements(int[] arr, int i, int j) {
// 기존의 수 [i]를 따로 기억하고
int temp = arr[i];
// 기존 [i] 자리에 [j]의 값을 넣으며
arr[i] = arr[j];
// 저장해두었던 [i]의 값을 다시 [j]의 자리에 넣는다.
arr[j] = temp;
}
// 탐색
// 정수 배열과 시작 인덱스를 인자로 받는다.
public static int indexLowest(int[] arr, int start) {
// 시작인덱스를 따로 기억하고
int low = start;
// 받은 배열의 크기만큼 반복을하며
for (int i = start; i < arr.length; i++) {
// 만약 현재의 수가 현재 지정된 최소값보다 작다면
if ( arr[i] < arr[low] ) {
// low의 인덱스는 현재의 인덱스가 된다.
low = i;
}
}
// 반복문이 끝나고 제일 작은 값을 가진 인덱스가 반환된다.
return low;
}
// 정렬기능을하는 메서드 미 정렬 정수 배열을 인자로 받는다.
public static int[] sort(int[] arr) {
// 받은 배열의 크기만큼 반복을하며
for (int i = 0; i < arr.length; i++) {
// 그 반복의 첫 숫자를 시작으로 받은 배열과 함께 현재의 인덱스부터 탐색한다.
int j = indexLowest(arr, i);
// 현재의 인덱스에 탐색 결과로 나온 제일 작은 값과 현재 인덱스의 값을 서로 바꾼다.
swapElements(arr, i, j);
}
return arr;
}
public static void main(String[] args) {
int[] test = {3,5,2,9,7,8,1};
int[] result = SelectionSort.sort(test);
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
// = > 1235789
}
}
}
public class SelectionSort {
// 두 인덱스의 벨류를 바꾸는 메서드
// 정렬할 정수 배열과 서로 교체할 인덱스 i, j 를 인자로 받는다
public static void swapElements(int[] arr, int i, int j) {
// 기존의 수 [i]를 따로 기억하고
int temp = arr[i];
// 기존 [i] 자리에 [j]의 값을 넣으며
arr[i] = arr[j];
// 저장해두었던 [i]의 값을 다시 [j]의 자리에 넣는다.
arr[j] = temp;
}
// 탐색
// 정수 배열과 시작 인덱스를 인자로 받는다.
public static int indexLowest(int[] arr, int start) {
// 시작인덱스를 따로 기억하고
int low = start;
// 받은 배열의 크기만큼 반복을하며
for (int i = start; i < arr.length; i++) {
// 만약 현재의 수가 현재 지정된 최소값보다 작다면
if ( arr[i] < arr[low] ) {
// low의 인덱스는 현재의 인덱스가 된다.
low = i;
}
}
// 반복문이 끝나고 제일 작은 값을 가진 인덱스가 반환된다.
return low;
}
// 정렬기능을하는 메서드 미 정렬 정수 배열을 인자로 받는다.
public static int[] sort(int[] arr) {
// 받은 배열의 크기만큼 반복을하며
for (int i = 0; i < arr.length; i++) {
// 그 반복의 첫 숫자를 시작으로 받은 배열과 함께 현재의 인덱스부터 탐색한다.
int j = indexLowest(arr, i);
// 현재의 인덱스에 탐색 결과로 나온 제일 작은 값과 현재 인덱스의 값을 서로 바꾼다.
swapElements(arr, i, j);
}
return arr;
}
public static void main(String[] args) {
int[] test = {3,5,2,9,7,8,1};
int[] result = SelectionSort.sort(test);
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
// = > 1235789
}
}
}