선택 정렬 --> 가장 작은 수를 선택하자 그래서 앞의 모임으로 보내자
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] <<" " ;
}
}
삽입 정렬 (0) | 2022.10.26 |
---|---|
버블 정렬 (0) | 2022.10.26 |
시간 복잡도 계산(이해하기 쉬운) (0) | 2022.10.25 |
동적 계획법 (0) | 2022.10.25 |
댓글 영역