안녕하세요~~~ 오늘은 자바로 선택정렬(selection sort) 에 대해 알아 보겠습니다.
버블정렬과 함께 정렬중에 기본인 선택정렬인데요!! 버블정렬과 마찬가지로 느린 정렬에 속합니다.
하지만 정렬에 기본이되기때문에 알아두면 좋은데요.
선택정렬은 기준이되는 수와 나머지수를 비교하여 가장 낮은수를 제일 앞으로 보내는 정렬입니다!!(오름차순일 경우)
그림설명을 보고 코드를보며 알아보겠습니다.
그림과 같이 0번째 인덱스와 그뒤의 값을 비교한뒤 가장 낮은 값을 0번째로 만들고 수행이 끝났으면 기준을 한칸 옮겨서 똑같이 수행합니다.
코드로 보면
public class SelectSort {
public static void main(String[] args) {
int[] a = {254,3,213,64,75,56,4,324,65,78,9,5,76,3410,8,342,76};
int b;
for(int i = 0 ; i < a.length -1 ; i ++) {
for(int j = i+1 ; j < a.length ; j ++) {
if(a[i] > a[j]) {
b = a[j];
a[j] = a[i];
a[i] = b;
}
}
}
for(int i = 0 ; i < a.length ; i ++) {
System.out.println(a[i]);
}
}
}
첫번째 for문에서는 기준이되는 수를 정해준다고 볼 수 있습니다.
두번째 for문에서는 기준이되는 수와 그뒤 의 수를 비교하여 가장 낮은수를 기준이되는 인덱스로 교체하는 방식으로 끝까지 돌게 되어있습니다.
첫번째 for문을 수행하고나면 배열의 0번 인덱스는 그 배열의 최소값이 되기때문에 두번째는 i+1 부터 검사를 시작하면 됩니다.
오늘은 기본적인 selection 정렬에 대해 알아 보았습니다.
'Algorithm > 정렬알고리즘' 카테고리의 다른 글
[Algorithm]퀵정렬 알고리즘(C++) (4) | 2018.06.04 |
---|---|
[Algorithm]힙정렬 알고리즘(C++) (2) | 2018.05.30 |
[Algorithm]내부정렬 정렬시간(시간복잡도) (0) | 2017.08.24 |
[Algorithm]삽입정렬 예제(insertion sort) (0) | 2017.08.22 |
[Algorithm]버블정렬 예제(bubble sort) (3) | 2017.08.11 |