선택정렬
선택 정렬
‘가장 작은 것을 선택해서 제일 앞으로 보낸다.’ 생각에 기인한 알고리즘이다.
배열 내에 인덱스는 이미 정해져 있고 그 위치에 어떤 값을 넣을지 고른다.
배열 내에 원소가 들어갈 인덱스(자리)는 이미 정해져 있고, 그 위치에 어떤 값을 넣을지 고르는 알고리즘이다.
10개의 원소 중 크기가 작은 원소부터 차례대로 배열에 넣어야 하는 상황을 생각해보자.
이때 최솟값이 들어갈 자리는 배열의 제일 왼쪽으로 정해져 있다.
10개의 원소 중 가장 작은 값을 찾기 위해 9번 비교해야 한다.
2번째 최솟값은 8번, 3번째 최솟값은 7번 해야 한다.
즉 각각 (n-1) (n-2)… n번 비교하게 되고, 총 n(n-1)/2번 반복하면 정렬이 끝난다.
그렇다면 선택 정렬의 시간 복잡도는 O(N^2)임을 알 수 있다(선택 정렬의 최선, 최악, 평균 시간 복잡도는 동일하다)
1 | let i, j, min, index, temp; |
특징
- 간단하게 구현할 수 있으나 비효율적이다.
- 추가적인 메모리 소모가 적다
- 따로 계산을 위한 공간을 필요로 하지 않는다.
Reference
[알고리즘] 선택 정렬이란
[정렬] 선택정렬(Selection Sort)의 개념/Java코드/시간복잡도/공간복잡도
[정렬 알고리즘 모음]
Comment