반응형

일반적으로 우리가 사용하는 정렬은 오름차순, 내림차순으로

모여있는 데이터를 하나의 기준으로 순차적으로 보여주는 것을 뜻합니다.

 

이런 정렬 기능을 Java를 이용하여 한번 구현해 보겠습니다.

 

정렬 기능을 구현하기 위해서 사용한 알고리즘은 많이 있는데요.

우리는 선택정렬 알고리즘을 이용하여 한번 문제를 해결해 보겠습니다.

 

선택정렬이란?

위의 5개의 방에는 정렬되지 않은 숫자가 있습니다.

선택 정렬이란 총 위의 방 갯수만큼 반복하여 데이터를 정렬하는데요.

 

첫번째 : 1번방과 나머지 방을 비교하여 제일 작은 수를 1번방에 위치시킨다.

두번째 : 2번방과 나머지 방(1번방 제외)을 비교하여 제일 작은 수를 2번방에 위치시킨다.

세번째 : 3번방과 나머지 방(1,2번방 제외)을 비교하여 제일 작은 수를 3번방에 위치시킨다.

 

이런식으로 총 방의 갯수만큼 반복하여 숫자를 정렬하는 것이 바로 선택정렬 입니다.

 

선택정렬 Java 소스

public class test {
	public static void main(String[] args) {
		
		int[] su_num = {45, 12, 36, 99, 77};
		int temp = 0;
		
		int idx = 0;
		
		for(int i=0; i<su_num.length; i++) {
			
			idx = i;
			temp = 0;
			
			for(int j=i+1; j<su_num.length; j++) {
			
				if(su_num[idx] > su_num[j]){
					
					idx = j;
					
				}
			}
			
			if(i != idx) {
				temp = su_num[i];
				su_num[i] = su_num[idx];
				su_num[idx] = temp;
			}
			
			System.out.println(idx+"회전 : "+su_num[i]);
			
		}
		
}

위의 소스는 바로 선택정렬을 Java로 구현한 예제입니다.

 

  1.  su_num이라는 5개의 숫자를 만듭니다.
  2.  For문을 이용하여 방의 갯수만큼 반복문을 수행합니다.
  3. 두번째 For문은 기준이 되는 방, 이외의 방을 비교하기 위해서 선언합니다.
  4. 첫번 방[첫번째 For문]과 나머지 방[두번째 for문]을 비교하여 숫자가 작으면 idx변수에 해당 방을 기록합니다.
  5. 첫번째 방의 비교가 끝나면 idx 기준이 되는 방의 번호가 바뀌었는지 확인합니다.
  6. 방의 번호가 바뀌었으면 첫번째 방보다 작은 값이 있다는 의미가 되므로 첫번째 방과 기록된 방번호(idx)값을 서로 교체해줍니다.
  7. 이런식으로 나머지 방도 반복하여 수행해 줍니다.

소스 수행결과

 

위에서 구현한 선택정렬 소스를 이클립스에서 구동한 모습입니다.

이 외에도 버블정렬,퀵정렬,삽입정렬 등 다양한 방법이 존재합니다.

 

위의 로직은 제가 구현한 하나의 방법일 뿐이며

자신이 방법을 이해하고 한번 다시 구현해 보시면 공부가 되실 것입니다.

반응형

+ Recent posts