알고리즘
선택 정렬 알고리즘
개발 초보
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]);
}
}
}