- 선택정렬 -> 오름차순 정렬, n번째 회전에 정렬 상태 구할때 많이 쓰임
- 주어진 데이터 중 최소값을 찾음
- 최소값을 맨 앞에 위치한 값과 교환
- 정렬된 데이터를 제외한 나머지 데이터를 같은 방법으로 정렬
- 시간복잡도 : O(n^2)
- 장점
- 데이터의 양이 적을 때 좋은 성능을 나타냄.
- 작은 값을 선택하기 위해서 비교는 여러번 수행되지만 교환횟수가 적다.
- 단점
- 100개 이상의 자료에 대해서는 속도가 급격히 떨어져 적절히 사용되기 힘들다.
코드
public class Selection {
public void sort(int[] data) {
int size = data.length;
int indexMin;
int temp;
for(int i=0; i<size-1; i++){
indexMin = i;
for(int j=i+1; j<size; j++){
if(data[indexMin] > data[j] {
indexMin = j;
}
}
temp = data[indexMin];
data[indexMin] = data[i];
data[i] = temp;
}
}
public static void main(String[] args) {
Selection selection = new Selection();
int data[] = {66, 10, 1, 99, 5};
selection.sort(data);
for(int i=0; i<data.length; i++){
System.out.println("data["+i+"] : " + data[i]);
}
}
}
- 두 변수의 값을 바꾸려면 변수가 하나 더 필요하다.(temp))
출처