본문 바로가기

알고리즘/정렬 (Sort)

선택 정렬 (Selection Sort)

반응형

#Selection_Sort

" 리스트의 값들 중 가장 작은 값들을 선택해 순서대로 맨 앞으로 보낸다. "

 

#Sudo_code

  1. 리스트의 길이 만큼 진행한다.

  2. 최소값 min 값을 처음에 무엇과 비교해도 가장 큰 값을 넣는다.

  3. 배열을 처음부터 탐색을 진행하면서, 해당 index에 들어 있는 값과 min 값을 비교해 계속해서 min을 최신화시켜준다.

  4. 한 번의 루프를 돌아 만들어진 index의 값은 최소 값 min이 들어간 값이기 때문에 리스트의 맨 앞의 값과 swap 해준다.

  5. 1 ~ 4번의 과정을 리스트의 길이 만큼 반복하면서 오름차순으로 정렬한다.

 

#Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main(){
    int i, j, min, index, temp;
    int array[10= {11058764329};
    for(int i = 0; i < 10; i++){
        min = 9999;
        for(int j = i; j < 10; j++){
            if (min > array[j]) {
                index = j;
                min = array[j];
            }
        }
        temp = array[i];
        array[i] = array[index];
        array[index] = temp;
    }
    for(int i = 0; i < 10; i++)
    {
        printf("%d", array[i]);
    }
    return 0;
}

cs

 
#Time
시간 복잡도 = O(N^2)

 

 

 

 

반응형

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

삽입 정렬 (Insertion Sort)  (0) 2019.02.11