[Algorithm] Selection Sort 선택정렬 알고리즘
Selection Sort
선택정렬 알고리즘은 제자리 정렬 알고리즘 중 하나로 입력 데이터 외 추가 데이터가 필요하지 않은 알고리즘이다.
원리
- 정렬하고자 하는 데이터 중 가장 큰 데이터의 맨 끝 데이터랑 교환
- 0번 째 Index부터 N-i까지 차례로 순회한다.
- 순회를 하던 중 값이 Index < Index +1 일 경우 가장 큰 값을 Index + 1이라 한다.
- 순회를 마쳤으면 마지막 값이랑 가장 큰 값이랑 교환한다.
- i를 1 올리고 다시 0부터 순회한다.
시간 복잡도
\[(n-1) + (n-2)... = \frac{n(n-1)}{2} = O(N^2)\]- 비교 횟수
- i가 n-2 일 때 비교횟수 : n-2
- i가 n-1 일 때 비교횟수 : n-1
- i가 1 일 때 비교횟수 : 1
- 교환 횟수
- 외부 루프의 실행 횟수와 동일
- Swap시 3번의 데이터 이동 발생
코드
public void SelectionSort(){
for(int last = 0; last < size; last++){
int largestIndex = 0;
for(int cur = 0; cur < size - last; cur++){
if(data[largestIndex] > data[cur]){
largestIndex = cur;
}
}
swap(data[largestIndex], data[cur]);
}
}
댓글남기기