개념

선택 정렬

개발참치 2021. 7. 7.

제일 간단한 정렬 중 하나로, 사람이 하는 정렬과 굉장히 유사합니다.

배열의 앞 인자부터 하나하나 선택하여 정렬하므로 선택 정렬이라는 이름이 생겼습니다.

당연히 효율적이지는 않겠죠..

 

 

특징

  • 비교 횟수는 많으나, 교환 횟수는 상당히 적음
  • 역순 정렬일 때, 최적의 효율을 보여줌 (정렬할 인자가 많음)
  • 반대로, 정렬할 인자가 적을 때는, 최악의 효율
  • 비교 특성 상 맨 앞으로 순차적으로 정렬이 됩니다

시간 복잡도

  • 최악: O (n^2)
  • 최선: O (n^2)
  • 평균: O (n^2)
시간 복잡도는 굉장히 비 효율적인 편입니다.

예시 그림

구현 코드

void selectionSort(int arr[], int size) {
    int minIndex;
    int i, j;
    for (i = 0; i < size - 1; i++) {
        minIndex = i;
        for (j = i + 1; j < size; j++) 
            if (arr[j] < arr[minIndex])
                minIndex = j;
         
        swap(&arr[i], &arr[minIndex]);
    }
}

'개념' 카테고리의 다른 글

BFS (너비 우선 탐색)  (0) 2021.07.29
DFS (깊이 우선 탐색)  (0) 2021.07.29
합병 정렬  (0) 2021.07.07
삽입 정렬  (0) 2021.07.07
버블 정렬  (0) 2021.07.07

댓글