Alg동작 원리
- 전체 데이터에서 가장 작은값을 고른다.
- 그 값을 temp(result) 배열에 저장
- 해당 값을 삭제한다.
- temp 배열을 다 채울 때 까지 반복
코드(Java)
import java.util.Arrays;
public class SelectionSort {
public static void main(String[] args) {
int[] data = { 58, 8, 28, 3, 18, 6, 33, 20 };
selectionSort(data);
System.out.println(Arrays.toString(data));
}
public static void selectionSort(int[] data) {
int[] result = new int[data.length];
int count = 0;
int min = 0;
int minValue = Integer.MAX_VALUE;
while (count < result.length) {
for (int i = 0; i < data.length; i++) {
if (data[i] != -1) {
if (data[i] < minValue) {
min = i;
minValue = data[i];
}
}
}
result[count++] = minValue;
data[min] = -1;
minValue = Integer.MAX_VALUE;
}
for (int i = 0; i < data.length; i++) {
data[i] = result[i];
}
}
}
코드(C++)
void selectionSort(){
const int INF = 987654321;
int temp[MAX];
int count = 0;
int minIdx = 0;
while(count != n){
for(int i=0;i<n;i++){
if(arr[i] < arr[minIdx]){
minIdx = i;
}
}
temp[count++] = arr[minIdx];
arr[minIdx] = INF;
}
for(int i=0;i<n;i++)
arr[i] = temp[i];
}