반응형
1.알고리즘설명
가장 직관적인 정렬이다. 오름차순 정렬을 한다면,
- n개 수에 대해서 가장 작은 값을 찾아서(n-1번 비교) 그 값을 가장 왼편에 놓고(0번 째 자리에), - 나머지 수에 대해서 가장 작은 값을 찾아서 1번 째 자리에 놓고, - 이러한 과정을 수가 끝날 때까지 수행 |
아래 그림은 정렬되는 모습을 애니메이션으로 보여준다. (출처: wikipedia)
2. 알고리즘 Flow
- i=0
- i가 n-2가되면 종료
- i항부터 (n-1)항까지에서 가장 작은 값을 tmp에 저장 tmp = min(data[i] ~ data[n-1])
- i항과 tmp를 교환 swap(i, tmp)
- i를 하나 중가시키고 2로 돌아간다.
3. 소스 코드
inline void swap(int& left, int& right) {
int tmp;
tmp = left; left = right; right = tmp;
}
void selectionSort(vector<int> &v){
int size = v.size();
for(int i=0;i<size-1;++i){
int tmp=i;
for(int j=i+1;j<size;++j) if(v[tmp] > v[j]) tmp = j;
swap(v[i],v[tmp]);
}
}
4.시간복잡도:O(n2)
- 비교: n2/2
- 교환:(n-1)
반응형
'Algorithm > 정렬 탐색 뻐개기' 카테고리의 다른 글
005. 거품 정렬(Bubble Sort) (0) | 2020.05.05 |
---|---|
004. 이진 삽입 정렬(Binary Insertion Sort) (0) | 2020.05.05 |
003. 삽입 정렬(Insertion Sort) (0) | 2020.05.05 |
001. 정렬(Sorting) (0) | 2020.05.05 |
글쓰기에 앞서... (0) | 2020.05.05 |