알고리즘

선택 정렬 알고리즘

개발 초보 2023. 4. 18. 13:42
import java.io.*;
import java.lang.*;
import java.util.*;


public class Main {
	public static final Scanner scanner = new Scanner(System.in);
    
    public static void selectionSort(int[] data, int n){ //정수형 배열과 크기를 입력 받음
		for(int i = 0; i < n; i++){ //배열의 크기만큼 1씩 증가하며 실행
				int idx = i; //idx(최솟값을 담을 변수)를 선언 
				for(int j = i; j < n; j++){ 
						if(data[j] < data[idx]){ //만약  data[idx](현재 최소값)보다 data[j]가 작다면 
							idx = j; //idx에 j를 대입
						} 
				}
                		/**
                		* i(현재 인덱스 시작 위치)와 idx(현재 최소값)의 위치를 바꾸는 과정
                		*/
				int tmp = data[i]; //tmp에 i(현재 인덱스 시작 위치)를 임시 저장
				data[i] = data[idx]; //i에 idx(현재 최소값)을 대입
				data[idx] = tmp; //idx에 임시 저장한 tmp(기존 i, 현재 인덱스 시작 위치)를 대입
		}
	}

	public static void main(String[] args) throws Exception {
		int n = scanner.nextInt();
		int[] data = new int[n];
		for(int i = 0 ; i < n ; i++)
		{
			data[i] = scanner.nextInt();
		}

		selectionSort(data, n);

		for(int i = 0; i < n ; i ++)
		{
			if( i > 0 )
			{
				System.out.print(" ");
			}
			System.out.print(data[i]);
		}
	}

}

 

 

10주 완성 알고리즘 코딩테스트 - goorm edu에서 들으실 수 있는 내용입니다.