오봉이와 함께하는 개발 블로그
선택 정렬(Selection Sort) 본문
728x90
Algorithmday_4 정리 (2021.12.01 수요일)
선택 정렬(Selection Sort)
- 잘못된 위치에 들어가 있는 원소를 찾아서 그것을 올바른 위치에 넣는 원소 교환 방식으로 정렬
- 가장 작은 원소를 찾아 첫 번째 위치의 원소와 교환
- 두 번째로 작은 원소를 찾아 두 번째 위치의 원소와 교환
- 첫 번째 원소를 키로 지정하고 뒤 원소와 비교해서 작은 값을 앞으로 보내는 방식
- 두 번째 원소를 키로 지정하고 뒤 원소와 비교해서 작은 값을 앞으로 보내는 방식
- 정렬될 때 까지 과정 반복
- 초기 : 5, 2, 8, 3, 1
- 1라운드
- 키는 첫 번째 원소
- 2, 5, 8, 3, 1 (5와 2교환)
- 1, 5, 8, 3, 2 (2와8, 3을 비교 했지만 2가 작기 때문에 교환하지 않고, 2와 1교환)
- 2라운드
- 1, 5, 8, 3, 2
- 키는 두 번째 원소
- 1, 3, 8, 5, 2 (5와 8을 비교 했지만 5가 더 작아서 그대로 두고 5와 3을 비교해서 두 원소 위치 교환)
- 1, 2, 8, 5, 3 (네 번째 위치 원소까지 비교 했으니 다섯 번째 위치 원소와 비교 3과 2의 위치 교환)
- 3라운드
- 1, 2, 8, 5, 3
- 키는 세 번째 원소
- 1, 2, 5, 8, 3 (8과 5 비교해서 위치 교환)
- 1, 2, 3, 8, 5 (네 번째 위치 원소까지 비교 했으니 다섯 번째 위치 원소와 비교 5와 3 위치 교환)
- 4라운드
- 1, 2, 3, 8, 5
- 키는 네 번째 원소
- 1, 2, 3, 5, 8 (8과 5 비교, 두 원소 위치 교환)
- 완성
선택 정렬 예제 코드
- SelectionSort.java
public class SelectionSort {
public static void main(String[] args) {
int [] arr = {5,2,8,3,1};
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}
static void selectionSort(int[] arr) {
int temp;
// 총 라운드 : 배열 크기 - 1 번 진행
for(int i = 0; i < arr.length-1; i++) {
// i 다음부터 끝까지 비교
for(int j = i+1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}
728x90
'알고리즘 & 자료구조 & 네트워크' 카테고리의 다른 글
쉘 정렬(Shell Sort) (0) | 2021.12.01 |
---|---|
삽입 정렬(Insertion Sort) (0) | 2021.12.01 |
버블 정렬(Bubble Sort) (0) | 2021.12.01 |
정렬(Sort) (0) | 2021.12.01 |
트리(Tree) (0) | 2021.11.30 |
Comments