[Algorithm] Sorting / Selection Sort

이수진·2022년 1월 11일
0
post-custom-banner

Selection Sort(선택 정렬)

  • 가장 작은 것을 선택하여 제일 앞으로 보내는 알고리즘
  • 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘
    • 첫 번째 순서에는 첫 번째 위치에 가장 최솟값을 넣는다.
    • 두 번째 순서에는 두 번째 위치에 남은 값 중에서 최솟값을 넣는다.
      ...

선택정렬의 코드는 다음과 같습니다.

#include <iostream>
using namespace std;

int main(){
   int a[10] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9};
   int n = 10;

   for(int i=0; i<n-1; i++){
       int idx = i; // idx: 매 사이클을 돌 때의 가장 작은 배열의 인덱스값을 기록
       for(int j=i+1; j<n; j++){
           if(a[j]<a[idx]) idx = j;
       }
       swap(a[i], a[idx]);
   }

   for(int i=0; i<n; i++) cout<<a[i]<<" ";
   return 0;
}

선택 정렬의 시간복잡도

  • 선택 정렬의 시간 복잡도는 최선의 경우와 최악의 경우 모두 O(n^2)입니다.
profile
꾸준히, 열심히, 그리고 잘하자
post-custom-banner

0개의 댓글