프로그래밍/알고리즘

[Algorithm] 정렬 알고리즘 - selectionSort(선택 정렬)

개발도사(진) 2024. 5. 10. 13:21
void selectionSort(vector<int> &A){
    for(int i=0;i<A.size();i++){
        int minIdx = i;
        for(int j=i+1;j<A.size();j++){
            if(A[minIdx]>A[j]){
                minIdx = j;
            }
        }        
    swap(i, minIdx, A);
    }
}

각각의 i번째 element에 대해, [i+1, N) 번째 element와 비교하여, 그 중 가장 작은 element와 i번째 element를 교체한다.

 

시간복잡도는 O(N^2)이다. 주어진 배열(혹은 vector나 list)의 element들이 무엇이든 간에 오직 해당 배열의 크기 N만이 시간 복잡도에 관여하므로, 최선/최악의 경우 모두 시간복잡도가 같다.