Post

선택 정렬

선택 정렬

선택 정렬은 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법입니다.

정렬 방법

selection

  • 남은 정렬 부분에서 최솟값 또는 최댓값을 찾는다.
  • 남은 정렬 부분에서 가장 앞에 있는 데이터와 선택된 데이터를 swap한다.
  • 가장 앞에 있는 데이터의 위치를 변경해 남은 정렬 부분의 범위를 축소한다.
  • 전체 데이터 크기만큼 index가 커질 때까지 반복한다.

시간 복잡도

선택 정렬의 시간 복잡도는 O(n^2)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다.

코드(Java)

아래 코드는 최댓값을 기준으로 정렬한 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Main {
    public static void main(String[] args) {
        int[] arr = {11, 9, 23, 5, 12};
        int end = arr.length;

        int maxIdx = 0;

        while(end > 0) {
            for(int i=1; i<end; i++) {
                if(arr[maxIdx] < arr[i]) maxIdx = i;
            }

            int temp = arr[end-1];
            arr[end-1] = arr[maxIdx];
            arr[maxIdx] = temp;

            maxIdx = 0;
            end--;
        }

        for(int n: arr) {
            System.out.print(n + " ");
        }
    }
}

참고
Doit! 알고리즘 코딩 테스트 자바편

This post is licensed under CC BY 4.0 by the author.

Comments