[Algorithm] Selection Sort

Updated:

  • 위치 먼저 선정
  • 해당위치에 원소들간의 대소비교를 통한 적절한 값 선택

Implementation

int idxMin, temp;
for (int i = 0; i < SIZE - 1; ++i) {
    idxMin = i;
    for (int j = i + 1; j < SIZE; ++j) {
        if (arr[j] < arr[idxMin]) {
            idxMin = j;
        }
    }

    temp = arr[idxMin];
    arr[idxMin] = arr[i];
    arr[i] = temp;
}
  • Time Complexity : O(n^2)
  • Space Complexity : O(n)
  • Execution Time (sec) : 0.917 (원소 30000개 기준)

장점

  • Bubble sort와 마찬가지로 알고리즘이 단순하다.
  • 정렬을 위한 비교 횟수는 많지만, Bubble Sort에 비해 실제로 교환하는 횟수는 적기 때문에 많은 교환이 일어나야 하는 자료상태에서 비교적 효율적이다.
  • Bubble Sort와 마찬가지로 정렬하고자 하는 배열 안에서 교환하는 방식이므로, 다른 메모리 공간을 필요로 하지 않는다. => 제자리 정렬(in-place sorting)

단점

  • 시간복잡도가 O(n^2)으로, 비효율적이다.
  • 불안정 정렬(Unstable Sort) 이다.

C++ 코드


ref :
선택정렬

Leave a comment