티스토리 뷰
selection sort란 수를 정렬하는 방식 중 가장 원시적인 정렬 알고리즘으로 가장 작은 수를 찾아낸 다음 앞으로 보내는 방식의 정렬 방법입니다.
정렬방식 중 가장 기본적인 정렬방식입니다.
위 그림에서 보다시피 정렬되지 않은 부분에서 최소값을 찾아 앞으로 보내 차례대로 정렬하는 것입니다.
(귀찮아서 손으로 그린건 안비밀)
그렇다면 선택정렬을 하기위해선 몇 번의 연산이 필요할까요?
N개의 수가 있다면 처음 최솟값을 구해 정렬하는데 N번, 두번째는 N-1번 세번짼 N-2번 ... 마지막 한번까지
N! 번 연산이 필요합니다
이는 공차가 -1인 등차수열로 n(n+1)/2의 공식을 가집니다. 따라서 시간복잡도는 O(N^2)을 가지게 되고 N의 개수가 많아질수록
효율이 굉장히 떨어지게됩니다 ㅠㅠ 따라서 처리해야할 데이터의 개수가 많을 때는 사용하지 않는 것이 좋을 것 같습니다
아래는 파이썬으로 짠 선택정렬 코드입니다.
import sys
numbers = list(map(int,sys.stdin.readline().split()))
for i,v in enumerate(numbers):
mini = min(numbers[i:])
m_index = i + numbers[i:].index(mini)
numbers[i],numbers[m_index] = mini,v
print(numbers)
'알고리즘' 카테고리의 다른 글
[알고리즘] Insertion Sort(삽입 정렬) (0) | 2020.04.14 |
---|---|
[알고리즘] Bubble Sort(버블 정렬) (0) | 2020.04.08 |
[프로그래머스] Greedy 문제 구명보트 (0) | 2020.03.01 |
[프로그래머스] Greedy 문제 체육복 (0) | 2020.02.23 |
[프로그래머스] hash 문제 전화번호 목록 (0) | 2020.02.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 병합정렬
- CodeDeploy
- oauth
- 자동화
- 스프링 부트
- 가상환경
- spring boot
- AWS
- 알고스팟
- 계수정렬
- 버블정렬
- Union-FInd
- 합병정렬
- 다익스트라
- 라이프 사이클
- 알고리즘
- 삽입정렬
- 배포
- react
- 백준
- greedy
- ci/cd
- stack
- RDS
- 퀵 소트
- 정렬
- EC2
- 선택정렬
- 서버
- 리액트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함