Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 타입스크립트
- Spring Cloud Netfilx Eureka
- Serial GC
- Transaction Pattern
- Resilinece4j
- 디자인패턴
- 생산자 소비자 패턴
- 키클락
- 사가 패턴
- zipkin
- saga pattern
- Action Pattern
- MSA
- 체인 패턴
- 알고리즘
- spring cloud
- JPA
- 디자인 패턴
- 스프링 배치
- 배치
- spring batch
- Java
- Parallel Old GC
- java 정렬
- TypeScript
- Spring Boot Actuator
- 스레드
- The law of Demeter
- 멀티스레드
- thread
Archives
- Today
- Total
PSD( Private-Self-Development )
선택 정렬( Selection sort ) 알고리즘 본문
선택 정렬 알고리즘?
각 자리마다 알맞은 수를 선택하여 교체함으로써 정렬하는 알고리즘
선택 정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지 와 차례대로 비교하여 그중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하며 정렬을 수행한다.
1회전을 수행하고 나면 가장 작은 값의 자료가 맨 앞에 오게 되므로 그다음 회전에서는 두 번째 자료를 가지고 비교한다. 마찬가지로 3회전에서는 세 번째 자료를 정렬한다.
특징
장점
- 자료 이동 횟수가 미리 결정된다.
단점
- 값이 같은 레코드가 있는 경우에 상대적인 위치가 변경될 수 있다.
구현
public static void selectionSort( int[] target ) {
for( int i = 0; i < target.length -1; i++ ){
int minIndex = i;
for( int j = i+1; j < target.length; j++ ){
if( target[minIndex] > target[j] ){
minIndex = j;
}
}
if( minIndex != i ){
int temp = target[i];
target[i] = target[minIndex];
target[minIndex] = temp;
}
}
}
시간 복잡도
최상, 평균, 최악 모두 O(n^2)
버블 정렬 보다는 빠르다.
참고
https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html
[알고리즘] 선택 정렬(selection sort)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'Backend > 알고리즘' 카테고리의 다른 글
퀵 정렬( Quick sort ) 알고리즘 (0) | 2022.12.16 |
---|---|
병합 정렬( Merge sort ) 알고리즘 (0) | 2022.12.15 |
쉘 정렬( Shell sort ) 알고리즘 (0) | 2022.12.13 |
삽입 정렬( Insertion sort ) 알고리즘 (0) | 2022.12.12 |
버블 정렬( Bubble sort ) 알고리즘 (0) | 2022.12.12 |