__sapar 2024. 5. 30. 15:30

선택 정렬

배열을 전체 스캔을 통해서 가장 우선순위가 되는 원소를 맨 앞으로 이동시킨다. 즉, 버블 처럼 순간순간 비교하여 바꾸는 것이 아니라 배열 전체 스캔 후 1번. 이것을 정렬이 끝날 때 까지 반복한다

. 버블 정렬보다는 성능이 좋지만 O(N^2) 이다. 좋지 않음

 

void SelectionSort(vector<int>& v)
{
    const int n = (int)v.size();

    for (int i = 0; i < n - 1; i++)
    {
        int bestI = i;
        for (int j = i + 1; j < n; ++j)
        {
            if (v[j] < v[bestI])
                bestI = j;
        }

        // swap
        int temp = v[i];
        v[i] = v[bestI];
        v[bestI] = temp;
    }
}