記錄

선택정렬 본문

IT_Fundamental/알고리즘

선택정렬

surhommejk 2019. 8. 12. 12:45

의미>

1부터 10까지의 배열이 무작위로 있을 때 10개를 대상으로 가장 작은 것을 골라 맨 앞과 위치 스위칭. 그리고 맨 앞에 간 가장 작은 것은 제쳐두고 나머지 9개를 대상으로 전체 검색을 하여 그 중 가장 작은 것을 맨 앞으로 스위칭.

이런 식으로 "비교-> 특정-> 위치 스위칭 -> 제껴두고 나머지들을 대상으로 다시 비교-> 특정-> 스위칭" 하는 것을 선택정렬이라고 함. '선택'인 이유는 대상을 특정해서 이를 선택하여 위치를 바꾸는데에서 '선택'이라는 명칭이 발생.

 

코드예시>

#include <stdio.h>



int main(void){

    

    int array[10] = {9, 5, 6, 8, 3, 7, 10, 2, 4, 1};

    int i, j, index, min, temp;

    

    for(i = 0; i < 10; i++){

        

        min = 100;

    

     //for(j = i; j < (10-i); j++){

     for(j = i; j < 10; j++){

            if(array[j] < min){

                min = array[j];

                index = j;              

            }

            

     }

        

        temp = array[i];

        array[i] = array[index];

        array[index] = temp;            

        

    }



    for(i = 0; i < 10; i++){

        printf("%d ", array[i]);

    }

    

    return 0;

}

시간복잡도>

N(N+1)/2

-> N^2/2 + N/2

-> N^2/2

-> N^2

= O(N^2)

'IT_Fundamental > 알고리즘' 카테고리의 다른 글

퀵정렬  (0) 2019.08.12
삽입정렬  (0) 2019.08.12
버블정렬  (0) 2019.08.12
Comments