Computer Science/자료구조

[자료구조/Sorting] Selection Sort

pop팝 2020. 5. 28. 20:49

 

Selection Sort

가장 작은 원소를 선택해서 교환하는 방식이다.

 

방법

아래의 방식을 첫번째 원소(i=0) 부터 마지막 원소-1(i=N-1) 까지 반복한다.

  • 가장 작은 요소를 찾기 위해 배열을 검색
  • 가장 작은 요소와 현재 배열의 원소를 교체

[C언어 코드]

void selectionsort (int array[], int len) {

    for (int i=0; i<len-1; i++) {

        int min_idx = i;

        for (int j=i+1; j<len; j++) {
            if (array[min_idx] > array[j])
                min_idx = j;
        }

        if (i!=min_idx) {
            int tmp = array[i];
            array[i] = array[min_idx];
            array[min_idx] = tmp;
        }
    }
}

과정

위와 같은 과정을 반복하여 Sorting 한다. 

시간복잡도

순서 복잡도
i=0 n-1
i=1 n-2
i=2 n-3
... ...
i=n-1 1

(n-1) + (n-2) + (n-3) + ... + 1 = n^2 = O(n^2)