정렬의 종류
버블 정렬(Bubble Sort)
선택 정렬(Selection Sort)
카운팅 정렬(Counting Sort)
삽입 정렬(Insertion Sort)
힙정렬
병합 정렬
퀵정렬
셀렉션 알고리즘을 전체 자료에 적용한 것으로, 주어진 자료들 중 가장 작은 값의 원소부터 차례대로 선택하여 위치를 교환하는 방식이다.
(셀렉션 알고리즘이란 저장되어 있는 자료로부터 k번째로 큰 혹은 작은 원소를 찾는 알고리즘이다.)
⭐가장 작은 원소의 인덱스를 찾기
⭐swap은 (내부 for문 끝나고서) 1번만
주어진 리스트 중에서 최소값을 찾는다.
그 값을 리스트의 맨 앞에 위치한 값과 교환한다.
맨 처음 위치를 제외한 나머지 리스트를 대상으로 위의 과정을 반복한다.
int[] arr = {123, 64, 321, 88, 87, 12, 8};
int len = arr.length;
// 총 len-1만큼 반복
// 마지막 자리는 1개만 남아있는 상태이므로 정렬할 필요없음
for(int i=0; i < len-1; i++) {
int minIdx = i;
for(int j=i+1; j < len; j++) {
// 가장 작은 값의 인덱스 번호를 알기 때문에
// 따로 그 값을 저장하지 않아도 된다.
if(arr[minIdx] > arr[j]) {
minIdx = j;
}
}
//여기서 1번 swap
int tmp = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = tmp;
}