선택 정렬

선택 정렬(selection sort)

선택 정렬은 데이터의 상태와 관계없이 일관된 처리를 수행하는 정렬 방식이다. 다음의 내용을 반복하며 정렬을 수행한다.

  1. 범위 내에서 최소값을 탐색한다.

  2. 찾은 최소값을 범위 내의 가장 앞에 위치한 데이터와 교체한다.

  3. 범위 내의 가장 앞 칸을 범위에서 제외한다.

  4. 1번으로 이동한다.

선택 정렬에서 사용하는 핵심 코드는 다음 두 가지이다.

  • 최소값 탐색

  • 데이터 교체

샘플 데이터

정렬을 위해 사용할 데이터는 다음과 같다.

int[] data = new int[]{30, 50, 20, 10, 40};

1회차

1회차에서는 배열 전체 범위인 data[0] 부터 data[4] 사이에서 최소값을 찾아 data[0]의 값과 교체하는 작업을 수행한다.

2회차

2회차에서는 1회차에서 정리한 data[0]을 제외한 data[1] 부터 data[4] 사이에서 최소값을 찾아 범위 내의 가장 앞 위치인 data[1]의 값과 교체하는 작업을 수행한다.

3회차

3회차에서는 1, 2회차에서 정리한 data[0], data[1]을 제외한 data[2] 부터 data[4] 사이에서 최소값을 찾아 범위 내의 가장 앞 위치인 data[2]의 값과 교체하는 작업을 수행한다.

4회차

4회차에서는 앞 회차들에서 정리한 위치를 제외한 data[3] 부터 data[4] 사이에서 최소값을 찾아 범위 내의 가장 앞 위치인 data[3]의 값과 교체하는 작업을 수행한다.

종합

전체 과정에 대한 코드는 다음과 같다

//준비
int[] data = new int[] {10, 20, 30, 50, 40};
		
//정렬
for(int i=0; i < data.length-1; i++) {
	//최소값 
	int min = i;
	
	for(int k=i+1; k < data.length; k++) {
		if(data[min] > data[k]) {
			min = k;
		}
	}
	
	//데이터 교체(swap)  
	int temp = data[min];
	data[min] = data[i];
	data[i] = temp;
}

//출력
System.out.println(Arrays.toString(data));

Last updated