본문 바로가기
Preparing Coding Test/Algorithm

[자료구조/Java] 선택 정렬(Selection Sort)

by weero 2020. 8. 20.

 

youtu.be/uCUu3fF5Dws

 

배열을 돌면서 작은 값부터 하나씩 앞으로 차곡차곡 옮기는 것

- 처음부터 끝까지 돌면서 가장 작은 값을 시작점의 숫자와 swap → 두번째부터 끝까지 돌면서···

- 시간복잡도 : O(n^2)

 

코드

public class Test{
	private static void selectionSort(int[] arr){
    	selectionSort(arr, 0);
    }
    private static void selectionSort(int[] arr, int start){
    	if(start < arr.length-1){
        	int min_index = start;
            for(int i=start; i<arr.length; i++){
            	if(arr[i] < arr[min_index]) min_index = i;
            }
            swap(arr, start, min_index);
            selectionSort(arr, start+1);
        }
    }
    private static void swap(int[] arr, int start, int min_index){
    	int tmp = arr[start];
        arr[start] = arr[min_index];
        arr[min_index] = tmp;
    }
    private static void printArray(int[] arr){
    	for(int data : arr){
        	System.out.print(data+", ");
        }
        System.out.println();
    }
    public static void main(String[] args){
    	int[] arr = {3, 6, 1, 8, 2, 4};
        printArray(arr);
        SelectionSort(arr);
        printArray(arr);
    }
}