기주

[알고리즘] 선택정렬 본문

알고리즘

[알고리즘] 선택정렬

기주그지마 2024. 11. 13. 14:33

 

 

선택정렬

선택정렬은 배열 내 요소 하나마다 나머지 요소들 중 최소값을 찾아 해당 위치에 배치하는 방식의 정렬 알고리즘이다,

이 방식은 배열의 첫 번째 요소부터 마지막 요소까지 반복하면서, 각 위치에 맞는 최소값을 찾아 배열 앞부분부터 정렬해 나간다.

 

배열 내 요소 1개당 n개의 배열 모두를 탐색하고,

n개의 요소들에 대해 반복해야하므로  시간복잡도는 N^2 이다.

따라서 배열의 크기가 커질수록 비효율적이지만 구현은 단순하다는 특징이 있다.

 

 

 

int n = Integer.parseInt(sc.next());
int[] arr = new int[n];
for(int i=0; i<n; i++){
    arr[i] = sc.nextInt();
}

//선택정렬 알고리즘 구현
for(int i=0; i<n-1; i++){
    int idx = i;
    for(int j=i+1; j<n; j++){
        if(arr[j] < arr[idx]) idx = j;
    }
    int tmp = arr[i];
    arr[i] = arr[idx];
    arr[idx] = tmp;
}

//정렬된 배열 출력
for(int i=0; i<n; i++){
    System.out.print(arr[i] + " ");
}