상세 컨텐츠

본문 제목

선택정렬

Algorithm

by 개복신 개발자 2022. 10. 25. 22:10

본문

728x90
반응형

선택 정렬 --> 가장 작은 수를 선택하자 그래서 앞의 모임으로 보내자

ex)

[1,3,2,4,7,6]

1. i의 역할 --> 수문장의 역할??

i를 기준으로 뒤쪽은 아직 정렬되지 않은 수들의 모임

i까지의 수들은 정렬이 된 상태

2. j의 역할 --> 행동원

j가 하나 하나씩 돌아다니면서 가장 작은 수를 찾는다 (i부터 끝까지 수중에서)

그 수를 찾았을 경우 swap 실행

3. swap

i를 기준으로 뒤쪽에서의 가장 작은 수를 찾았으면 이 수를 i번째 수와 교환한다.

 

위의 비유들을 더 정확히 이해하기 위해서는 코드를 보자

 

#include <iostream>
using namespace std;

int main() {
    int arr_len;
    cin >> arr_len;
    int arr[arr_len];

    for(int k=0; k<arr_len; k++) {
        cin >> arr[k];
    }
    
    int idx;
    for(int i=0; i<arr_len-1; i++) {
        idx = i;
        for(int j=i+1; j<arr_len; j++) {
            if(arr[j] < arr[idx]) idx = j;
        }

        int tmp = arr[idx];
        arr[idx] = arr[i];
        arr[i] = tmp;
    
    }
    for(int i=0; i< arr_len; i++) {
        cout << arr[i] <<" " ;
    }


}
반응형

'Algorithm' 카테고리의 다른 글

삽입 정렬  (0) 2022.10.26
버블 정렬  (0) 2022.10.26
시간 복잡도 계산(이해하기 쉬운)  (0) 2022.10.25
동적 계획법  (0) 2022.10.25

관련글 더보기

댓글 영역