프로그래밍/알고리즘

[알고리즘] 선택정렬(Select sort)

준코딩 2019. 3. 26. 20:46

알고리즘

 

선택정렬(Selection sort)

 

 

 

 

간단 요약

 

가정) Array[5]= { 15 ,11 ,1 ,3 ,8 } 을 오름차순으로 정렬한다.

 

1.  0번 부터 4번 데이터 중 최솟값을 찾아 0번 데이터와 스왑한다.

 

2.  1번 부터 4번 데이터 중 최솟값을 1번 데이터와 스왑한다.

 

3.  n번 반복

 

상세 설명

 

가정) Array[5]= { 15 ,11 ,1 ,3 ,8 } 을 오름차순으로 정렬한다.

 

 

 

 

 가장 먼저 전체 인덱스 중 최솟값을 찾는다.

 

 

 

 

최솟값 1을 첫번째 인덱스와 스왑한다.

 

 

 

 

 

그 다음 두번째에서 네번째 데이터 중 최솟값을 찾는다.

최솟값 3을 두번째 데이터 와 스왑한다.

여기까지 하면 두번째 데이터 까지 오름차순 정렬이 완성된다.

 

 

 

 

 

이렇게 n번 반복하면 오름차순 정렬이 완성된다 

 

 

시간복잡도

 

 

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#define number 5
 
using namespace std;
 
void Selectsort(int * arr)
{
    for (int i = 0; i < number-1; i++) { //인덱스가 5까지라면 4까지만 가도록 설정
        int min= i;
        for (int j = i + 1; j < number; j++) { 
            if (arr[j] < arr[min]){//j의 인덱스가 최솟값보다 작다면 min=j
                min = j;
            }
        }
        int temp = arr[min]; //min값을 가장 왼쪽으로 보낸다
        arr[min] = arr[i];
        arr[i] = temp;
    }
}
 
 
int main(void)
{
    int arr[5= { 1511138 };
    int i;
 
    for (i = 0; i < 5; i++) {
 
        cout << arr[i] << " ";
    }
    cout << "\n\n";
    Selectsort(arr);
    for (i = 0; i < 5; i++) {
        cout << arr[i] << " ";
    }
 
    return 0;
 
}
 
cs

 

 출처 : https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html

 출처 : https://terms.naver.com/entry.nhn?docId=2270435&cid=51173&categoryId=51173