반응형
선택 정렬이란?
값들 중에서 가장 최솟값을 찾아서 맨 왼쪽으로 채워가면서 정렬하는 방법
예제 : 오름차순으로 선택정렬
10 5 3 1 7 - 시작
10 5 3 1 7 - 최소값 1을 찾음
1 5 3 10 7 - 1과 첫번째 값인 10을 교환 후 패스
1 5 3 10 7 - 최소값 3을 찾음 (첫번째 값은 제외하고 찾음)
1 3 5 10 7 - 3과 두번째 값인 5를 교환 후 패스 (첫번째 값은 제외하고 교환)
1 3 5 10 7 - 최소값 5를 찾음
1 3 5 10 7 - 세번째에 있음으로 교환없이 패스
1 3 5 10 7 - 최소값 7을 찾음
1 3 5 7 10 - 최소값 7과 10을 교환 후 정렬 완료
특징
- 장점
- 구현이 간단하다
- 단점
- 데이터가 클수록 느려짐
시간 복잡도
- 최악 시간 복잡도 : O(n^2) 비교, O(n) 교환
- 최선 시간 복잡도 : O(n^2) 비교, O(n) 교환
- 평균 시간 복잡도 : O(n^2) 비교, O(n) 교환
java 소스 코드 구현
public class Selection {
public static void main(String[] args) {
int[] arr = {10, 5, 4, 1, 14, 19, 3, 13, 2, 18};
int minIndex;
int temp;
for (int i = 0; i < arr.length; i++) {
minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
//1 2 3 4 5 10 13 14 18 19
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d ", arr[i]);
}
}
}
반응형
'언어 > java' 카테고리의 다른 글
자바 toCharArray() 문자열을 한글자씩 char형의 배열로 담는 함수 사용법 (0) | 2023.04.10 |
---|---|
자바 배열 오름차순 내림차순 정렬 Arrays.sort() (0) | 2021.01.06 |
거품정렬(버블정렬 bubble sort) java 소스 (0) | 2021.01.05 |
댓글