선택정렬(Selection Sort) 구현하기
2020. 8. 12. 16:51ㆍAlgorithm
선택정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지와 차례대로 비교하여 그 중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하여 정렬을 수행하는 정렬 알고리즘이다.
소스코드
public static void main(String[] args) {
int[] arr = {3, 6, 2, 8, 1, 15, 11, 5};
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}
private static void selectionSort(int[] arr) {
for (int i=0; i<arr.length; i++) {
int min = i;
for (int j=1+i; j<arr.length; j++) {
if (arr[j] < arr[min]){
min = j;
}
}
swapper(arr, min, i);
}
}
private static void swapper(int[] arr, int min, int i) {
int tempnum = arr[min];
arr[min] = arr[i];
arr[i] = tempnum;
}
선택정렬을 구현하고 있는 selectionSort 함수를 살펴보자.
private static void selectionSort(int[] arr) {
for (int i=0; i<arr.length; i++) {
int min = i;
for (int j=1+i; j<arr.length; j++) {
if (arr[j] < arr[min]){
min = j;
}
}
swapper(arr, min, i);
}
}
정렬할 배열을 인자로 받아 정렬을 실행한다. 이때 순회할 때마다 기준 인덱스를 하나씩 높이는데 이때 기준 인덱스를 변수 min에 할당한다.
이후 기준값을 나머지 비교값들과 하나씩 비교하여 비교값들 중 가장 작은 값이 들어있는 인덱스 j를 min에 대입한다.
마지막으로 swapper(arr, min, i) 함수를 통해 min 과 기준값인 i 의 값을 바꿔주면 된다.
'Algorithm' 카테고리의 다른 글
[Python] zip() 함수에 대하여 (0) | 2020.09.28 |
---|---|
합병정렬(Merge Sort) 구현하기 (0) | 2020.08.12 |
삽입정렬(Insertion Sort) 구현하기 (1) | 2020.08.12 |