선택정렬의 종류
① 최소값 선택 정렬 (오름차순)
② 최대값 선택 정렬 (내림차순)
최소값 선택 정렬 (오름차순)
- 정렬되지 않은 숫자 중에 가장 작은 숫자를 선택한다.
- 선택한 가장 작은 숫자를 정렬되지 않은 숫자들 중 첫번째 숫자와 위치를 바꾼다.
- 모든 숫자를 옮길 때까지 반복한다.
최대값 선택 정렬 (내림차순)
- 정렬되지 않은 숫자 중에 가장 큰 숫자를 선택한다.
- 선택한 가장 작은 숫자를 정렬되지 않은 숫자들 중 첫번째 숫자와 위치를 바꾼다.
- 모든 숫자를 옮길 때까지 반복한다.
시간복잡도
n개가 있을 때 가장 큰/작은 수를 구하기 위해서 n-1 번의 비교가 일어남. => n(n-1) / 2
O(n²)
구현 (JAVA)
public int[] solution(int n, int[] arr) {
for(int i = 0; i<n-1; i++) {
//1. 최소값 구하기
int min = arr[i];
int minIndex = i;
for(int j=i+1; j<n; j++) {
if(min>arr[j]) {
min = arr[j];
minIndex = j;
}
}
//2.자리바꾸기
int tmp = arr[i];
arr[i] = min;
arr[minIndex] = tmp;
}
return arr;
}
출처
'알고리즘 > 알고리즘' 카테고리의 다른 글
그래프의 표현(리스트, 행렬) (0) | 2021.09.19 |
---|---|
힙 정렬 Heap Sort (0) | 2021.09.19 |
병합정렬 Merge Sort (0) | 2021.09.19 |
삽입정렬 Insertion Sort (0) | 2021.09.19 |
알고리즘과 표기법 (0) | 2021.09.19 |