알고리즘

1. 선택 정렬

Like A Flowing Cloud 2021. 4. 27. 16:54

< 선택 정렬 >

: 가장 작은 것을 선택해서 제일 앞으로 보내는 알고리즘 (효율↓)

 

#include <stdio.h>
int main(void) {
	int i , j, min, index, temp; 
    //index = 가장작은 원소가 존재하는 위치
    //temp = 특정한 두 숫자를 서로 바꾸기 위해서
    
    int array[10] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9};
    
    for(i = 0; i < 10; i++) {
    	min = 9999;  //모든 원소들 보다 더 큰 숫자
        
        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\n", array[i]);
     }
    
    return 0;
}

 

temp = array[i];

array[i] = array[index];

array[index] = temp;

// 스와핑 // 가장 앞에 있는 것과 최솟값을 바꿔주겠다.


10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 +  1

→ 10 * ( 10 + 1 ) / 2 = 55번의 비교 연선

→ N * ( N + 1 ) / 2

→ N * N

→ O ( N^2 )  → 선택정렬의 시간복잡도