programming/java

[java] 선택정렬

몽구스_ 2021. 1. 1. 01:59
728x90
반응형

선택정렬이란, 

배열에서 가장 큰 숫자를 맨뒤로 보내고

맨뒤를 제외한 나머지 숫자에서 다시 가장 큰 숫자를 찾아 그 맨뒤로 보낸다.

이것을 배열만큼 반복하여 정렬하는 방법이다.

 

정렬되지 않은 것 중에서의 맨뒤인덱스 l이다.

max에 최대값을 담고 maxI에는 최대값의 인덱스를 담아

이것을 arr[l]과 바꾸어 맨뒤와 최대값의 자리를 바꾼다.

그럼 맨뒤는 정렬이 완료된 상태이므로 l--;을 빼주어

그것을 제외한 배열중에서 다시 최대값을 찾아 정렬을 한다.

 

public class SelectionSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {9,4,3,1,6,10,2,8};
		int[] newArr = null;
		newArr = sort(arr);
		
		for(int data : newArr) {
			System.out.print(data + " ");
		}
		
		

	}
	public static int[] sort(int[] arr) {
		int max = 0;
		int maxI = 0;
		int l = arr.length - 1;
		for(int i=0; i<arr.length; i++) {
			for(int j=0; j<l+1; j++) {
				if(arr[j] > max) {
					max = arr[j];
					maxI = j;
				}
			}
			arr[maxI] = arr[l];
			arr[l] = max;
			l--;
			max = 0;
		}
		return arr;
	}
}

 

콘솔창

728x90
반응형