본문으로 바로가기

안녕하세요~~~ 오늘은 자바로 선택정렬(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 정렬에 대해 알아 보았습니다.


댓글을 달아 주세요

  1. mj 2019.10.04 23:21

    최소값을 결정하고 swap 하는 코드로 바꾸셔야할 것 같아요