1. 주어진 숫자 중에 최솟값을 선택한다.
2. 최솟값과 맨 앞의 위치(정렬된 것을 제외한)를 변경한다.
3. 정렬된 것은 제외하고 1, 2 를 반복한다.
예시 )
5 1 8 2 6 에서 최솟값을 찾는다. : 1 , 맨 앞의 5와 바꾼다. // 1회전
1 5 8 2 6 에서 맨 앞의 1을 제외한 최솟값을 찾는다 : 2 , 정렬된 것을 제외한 맨 앞의 5와 바꾼다. // 2회전
1 2 8 5 6 에서 정렬된 1,2 를 제외한 최솟값을 찾는다. : 5 , 정렬된 것을 제외한 맨 앞의 8과 바꾼다. // 3회전
1 2 5 8 6 에서 정렬된 1,2,5를 제외한 최솟값을 찾는다. : 6 , 정렬된 것을 제외한 맨 앞의 8과 바꾼다. // 4회전
1 2 5 6 8 마지막 원소는 자동으로 정렬된다.
import java.util.Arrays;
public class 선택정렬 {
public static void main(String[] args) {
int[] arr = {5,1,8,2,6};
int min = 0;
for (int i = 0; i < arr.length-1; i++) {
min = i;
for (int j = i+1; j < arr.length; j++) {
if(arr[min] > arr[j]) {
min = j;
}
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
System.out.println(Arrays.toString(arr));
}
}
}
'ALGORITHM > 이론' 카테고리의 다른 글
Bubble Sort. 버블정렬 (0) | 2021.01.05 |
---|---|
Insertion sort. 삽입정렬 (0) | 2021.01.04 |
HashMap(해시테이블) (0) | 2020.11.14 |
ArrayList(선형리스트) (0) | 2020.11.09 |
[정올] 1169 주사위던지기1 (0) | 2020.05.17 |