기본 아이디어: 주어진 자료로부터 가장 작은 값의 원소부터 차례대로 선택해서 위치를 교환하는 방식
작동방식
1. 주어진 자료 중 최솟값을 찾는다.
2. 찾은 값을 리스트의 가장 왼쪽값과 교환한다.
3. 교환한 가장 왼쪽값을 제외하고 1,2 과정을 반복한다.
시간복잡도: O(n^2)
static int[] selectionSort(int arr[], int size) {
for(int i = 0; i < size-1; i++){
// 우선 현재 i번째 값을 가장 작은 값으로 설정한다.
int minIdx = i;
// i번째 이후부터 마지막 요소까지 확인하면서 최솟값이 있으면 그 인덱스로 minIdx를 수정한다.
for(int j = i+1; j < size; j++){
if(arr[minIdx] > arr[j]){
minIdx = j;
}
}
// 리스트의 가장 왼쪽값과 minIdx번째 값을 교환한다.
int tmp = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = tmp;
}
return arr;
}
코드에 오류가 있으면 말씀해주세요.