정렬중에서 가장 간단하고 직관적인 정렬이다
아이디어는
1. 배열중에서 가장 작은 숫자를 선택한다
2. 선택한 숫자와 가장 앞에있는 숫자를 교체한다
int* SelectionSort(int* arr, int size){
int min, index = 0, temp;
for(int i=0; i < size; i++){
min = 10000;
for(int j=i; j < size; j++){ //~i 까지 정렬이 되어있으므로 i에서 부터 시작
if(arr[j] < min){ // 배열의 최소값을 찾는다
min = arr[j];
index = j;
}
}
temp = arr[i]; //최솟값과 가장 앞의 값을 교체한다
arr[i] = arr[index];
arr[index] = temp;
}
return arr;
}
시간복잡도는 O(n * (n + 1) / 2) 이므로
O(n²)이다
'알고리즘 시*련아' 카테고리의 다른 글
C++ 삽입 정렬 - 정렬3 (0) | 2022.08.04 |
---|---|
C++ 버블정렬 - 정렬2 (0) | 2022.08.02 |
C++ 이중배열 (0) | 2022.07.25 |
C++ 문자열 동적 할당 (0) | 2022.07.14 |
C++ 입력 정리 (0) | 2022.07.11 |