728x90
목차
선택 정렬
개념
주어진 자료들 중 가장 작은 값의 원소부터 차례대로 선택하여 위치를 교환하는 방식으로 정렬하는 알고리즘
시간 복잡도: O(n^2)
정렬 과정
- 첫 번째 원소를 두 번째부터 마지막 원소까지 비교하여 가장 작은 값과 자리 교환
2가 가장 작은 원소이고, 그 값의 index는 2이므로 arr[0]과 arr[1] 교환, arr[0]은 가장 작은 값으로 정렬 완료
- 두 번째, 세 번째 … 끝에서 두 번째 원소까지 같은 과정을 반복함
코드
package sort;
import java.util.Arrays;
public class SelectionSort {
public static void main(String[] args) {
int[] arr = { 30, 15, 2, 8, 21, 7 };
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}
static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minIdx = i;
int idx = i;
while (idx < arr.length) {
if (arr[idx] < arr[minIdx]) {
minIdx = idx;
}
idx++;
}
swap(arr, i, minIdx);
}
}
static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
728x90
'CS > Algorithm' 카테고리의 다른 글
[알고리즘] 삽입 정렬 Insertion Sort (자바/Java) (0) | 2022.08.17 |
---|---|
[알고리즘] 카운팅 정렬(Counting Sort) (자바/Java) (0) | 2022.08.10 |
[알고리즘] 완전 검색, Baby-Gin (자바/Java) (0) | 2022.08.08 |
[알고리즘] 검색 Search - 순차 검색, 이진 검색 (자바/Java) (0) | 2022.08.08 |
[알고리즘] 정렬 - 버블 정렬(Bubble Sort) (자바/Java) (0) | 2022.08.08 |