반응형
Notice
Recent Posts
Recent Comments
Link
DNF LOVE
정렬 알고리즘(Sorting Algorithm)의 모든 것 ② - 선택정렬(Selection Sort) 본문
Computer Science/알고리즘
정렬 알고리즘(Sorting Algorithm)의 모든 것 ② - 선택정렬(Selection Sort)
botho 2019. 1. 24. 15:49반응형
2. 정렬 알고리즘(Sorting Algorithm)의 모든 것 ② - 선택정렬
: 선택 정렬(Selection Sort)은 다음과 같은 순서로 이루어진다. (출처 - 위키백과)
1. 주어진 리스트 중에 최소값을 찾는다.
2. 그 값을 맨 앞에 위치한 값과 교체한다.
3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.
- 선택정렬 역시 버블 정렬과 동일하게 최악의 경우일 때 O(n^2)만큼의 시간복잡도를 갖는다.
- 버블정렬과 동일하게 쉬운 개념의 알고리즘이며, 사용할 수 있는 메모리가 제한적인 경우에 사용 시 성능 상의 이점이 있을 수 있다.
<< 선택 정렬 C++ 코드 >>
인덱스 크기가 9이고 각 인덱스에 정렬되지 않은 정수가 들어있는 배열이 있다고 했을 때,
이런식으로 마지막 하나의 원소가 남을 때 까지 반복하다 보면 정렬이 되어 있다.
<< 선택 정렬의 특징 >>
* 장점
- 자료 이동 횟수가 미리 결정된다.
- 이해하기 쉬운 개념이다
* 단점
- 값이 같은 레코드가 있는 경우에 상대적인 위치가 변경될 수 있다.
<< 선택정렬의 시간복잡도 >>
- (n-1) + (n-2) + (n-3) + .... + 3 + 2 + 1 = n(n-1) / 2
- T(n) = O(n^2)
- 버블정렬과 같은 O(n^2)이지만 퍼포먼스는 선택정렬이 더 낫다.
반응형
'Computer Science > 알고리즘' 카테고리의 다른 글
Dynamic Programming(다이나믹 프로그래밍)에 대해서(Feat. 피보나치 수) (0) | 2019.07.11 |
---|---|
정렬 알고리즘(Sorting Algorithm)의 모든 것 ④ - 힙 정렬(Heap Sort) (0) | 2019.01.25 |
정렬 알고리즘(Sorting Algorithm)의 모든 것 ③ - 퀵 정렬(Quick Sort) (0) | 2019.01.25 |
정렬 알고리즘(Sorting Algorithm)의 모든 것 ① - 버블정렬 (0) | 2019.01.23 |
CS의 꽃, 알고리즘과 시간복잡도 (0) | 2019.01.23 |