반응형
정의
오름차순으로 정렬하는 기초적인 알고리즘 중 하나
기법
무차별 대입 Brute Force
알고리즘 순서
- 순회해서 최소값을 찾는다
- 첫번째 값과 최소값을 스왑한다
- 두번쨰 값부터 순회해서 최소값을 찾는다
- 두번쨰 값과 최소값을 스왑한다
- 마지막 직전까지 반복한다.
자바 코드
public static int[] selectionSort(int[] input) {
for (int i = 0; i < input.length-1; ++i) {
for (int j = input.length - 1; j > i; --j) {
if (input[j] < input[i]) {
int temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}
}
return input;
}
평균 시간 복잡도 Avg. time complexity
$O(n^2)$
최악 시간 복잡도 Worst time complexity
$O(n^2)$
공간 복잡도 space complexity
$O(1)$
안정성 stability
no
계산법
순회 횟수
$n-1$
가장 많이 방문한 요소 수
$n-1$ (마지막 요소)
가장 적게 방문한 요소 수
$1$ (첫번째 요소)
평균적으로 방문한 요소 수
(가장 많이 방문한 요소 수+가장 적게 방문한 요소)/2 $= \frac{(n-1+1)}{2} = \frac{n}{2}$
다항식 시간
순회 횟수*평균적으로 방문한 요소 수 $=(n-1)\cdot \frac{n}{2}$
시간 복잡도
$O(다항식 시간)=O((n-1)\cdot \frac{n}{2})=O((\frac{n^2}{2}-\frac{n}{2}))=O(n^2)$
반응형
'old > Programming' 카테고리의 다른 글
삽입 정렬 Insertion Sort (0) | 2021.09.16 |
---|---|
파이썬의 자료구조-리스트 List (0) | 2021.09.16 |
버블정렬 Bubble Sort (0) | 2021.09.10 |
[Java코드]알파벳 오더로 정렬하기 (0) | 2021.09.09 |
무차별 대입Brute force 알고리즘 (0) | 2021.09.09 |