대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법.
구현 방법이 복잡하고 시간 복잡도도 O(n²)으로 효율적이지 않아
코딩 테스트에선 많이 사용하지 않는다..
최솟값 또는 최댓값을 찾고, 남은 정렬 부분의 가장 앞에 있는 데이터와 swap하는 것이 선택 정렬의 핵심이다
public class 선택정렬 {
public static void main(String[] args) {
int[] array = {9,10,1,4,2,5,6,7,8,3};
int index,temp;
for(int i =0; i< array.length-1; i++){
// 가장 앞의 원소를 초기값으로 설정한다
index = i;
// 탐색을 진행하며, 가장 작은 값을 찾는다
for(int j=i+1; j< array.length; j++){
if(array[j]<array[index]){
index = j;
}
}
// 탐색이 완료되면 가장 작은 값을 가장 앞의 원소와 가장 작은 원소의 위치를 교환. swap
temp = array[index];
array[index] = array[i];
array[i]=temp;
}
System.out.println(Arrays.toString(array));
}
}