티스토리 뷰
반응형
선택정렬(Selection Sort)는 원리가 가장 간단한 정렬 알고리즘 중의 하나다. 우선 배열 A[1...n]에서 가장 큰 원소를 찾아 이 원소와 배열의 맨 끝자리에 있는 A[n]과 자리를 바꾼다. 그러면 방금 맨 뒷자리로 옮긴 원소, 즉 가장 큰 원소는 자기 자리를 찾았으므로 더 이상 신경쓰지 않아도 된다. 이 원소는 정렬이 끝났다고 볼 수 있으므로 이제 이 원소를 제외한 나머지 원소들로 같은 작업을 반복하면 된다.
간결하게 나타내면
각 루프마다
- 최대 원소를 찾는다.
- 최대 원소와 맨 오른쪽 원소를 교환한다.
- 맨 오른쪽 원소를 제외한다.
하나의 원소만 남을 때까지 위의 루프를 반복한다.
예를 들면, 정렬하고자 하는 배열(Initial array)에서 가장 큰 수(37)을 찾아 배열의 맨 끝 원소인 13과 자리를 바꾸고 잊어버린다. 그 다음 다시 가장 큰수(29)를 찾아 배열의 맨 끝 원소인 13과 자리를 바꾸고 잊어버린다. 다시 가장 큰 수(14)는 배열의 맨 끝에 위치해 있으므로 아무런 작업을 하지 않고 잊어버린다. 그리고 다시 가장 큰수(13)을 배열의 맨 끝 원소 10과 자리를 바꾸면 배열의 모든 원소들이 정렬이 완료된다.
선택정렬(Selection Sort)의 슈도코드는 다음과 같다.
선택정렬의 수행시간을 살펴보면
①의 for 루프는 n-1번 반족
②에서 가장 큰 수를 찾기 위한 비교횟수 : n-1, n-2, .... , 2, 1
③의 교환은 상 수 시간 작업
따라서 선택정렬의 시간복잡도는 다음과 같다.
T(n) = (n-1) + (n-2) + ... + 2 + 1 = O(n^2) 이다.
반응형
'프로그래밍 > 자료구조&알고리즘' 카테고리의 다른 글
| 삽입정렬(Insertion Sort) (0) | 2014.04.22 |
|---|---|
| 버블정렬(Bubble Sort) (0) | 2014.04.22 |
| 알고리즘이란? (0) | 2014.04.22 |
| 레드블랙 트리(Red-black tree) (0) | 2014.04.15 |
| 이진트리의 순회 (Binary Tree Traversal) (0) | 2014.04.14 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래밍
- 투자전략
- 반도체관련주
- 엔비디아
- 티스토리 초대장
- ubuntu
- 주식투자
- Rails
- ruby on rails
- codecademy
- html
- ruby
- 이수페타시스
- install
- 이펙티브 자바
- 알고리즘
- Java
- 현대차
- 웹프로그래밍
- OpenStack
- 국제유가
- SK하이닉스
- javascript
- CSS
- 삼성전자
- 한미반도체
- HBM
- Message Queue
- 자료구조
- rabbitmq
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |
글 보관함
Copyright ⓒ 2018 moneystory.blog. All rights reserved.
