ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 선택 정렬
    알고리즘/정렬 2021. 12. 24. 23:42
    728x90

    선택 정렬: 가장 작은 것을 반복적으로 선택하여 제일 앞으로 보내는 정렬 알고리즘.

     

    정렬이 안된 숫자들 중에서 최소값을 선택하여 배열의 맨 앞쪽 요소와 교환한다.

     

    Ex)

    정렬할 데이터 :

     

    1 10 5 8 7 6 4 3 2 9

    1 2 5 8 7 6 4 3 10 9

    1 2 3 8 7 6 4 5 10 9

    1 2 3 4 7 6 8 5 10 9

    ~

    1 2 3 4 5 6 7 8 9 10

     

    시간복잡도 : O(N^2)

    최악의 경우 연산의 횟수가 기하급수적으로 늘어나므로 비효율적인 정렬 알고리즘.

     

    #include <stdio.h>
    #include <limits.h> 
    int main()
    {
    	int i, j, min, index, temp; 	// index : 가장 작은 원소가 존재하는 위치 
    	int array[10] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9};
    	for(i = 0; i<10; i++)
    	{
    		min = INT_MAX;
    		for(j=i; j<10; j++)
    		{
    			if(min>array[j]) {
    				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;
    }
    728x90

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

    힙 정렬  (0) 2021.12.25
    병합 정렬  (0) 2021.12.25
    퀵 정렬  (0) 2021.12.25
    삽입 정렬  (0) 2021.12.24
    버블 정렬  (0) 2021.12.24

    댓글

Designed by Tistory.