알고리즘
[알고리즘] Select Sort (선택정렬)
2744m
2018. 10. 27. 17:07
각 루프마다 최대 원소를 찾는다.
최대 원소와 맨 오른쪽 원소를 교환한다.
맨 오른쪽 원소를 제외하고 탐색
하나의 원소가 남을 때 까지 반복한다.
<알고리즘>
selectSort(A[],n){
for last <- n down to 2{
A[1 ~ last] 중 가장 큰 수 A[k]를 찾는다;
A[k] <-> A[last];
}
}
<구현>
#include <iostream>
#include <random>
#define SIZE 10
using namespace std;
int A[SIZE];
void print_arr();
void make_num() {
for (int i = 0; i < SIZE; i++) {
A[i] = rand() % 10;
}
print_arr();
}
void print_arr() {
for (int i = 0; i < SIZE; i++) {
cout << A[i] << ' ';
}
cout << endl;
}
void select_sort(int n) {
if (n > 0) {
int max_temp = 0;
for (int i = 1; i < n; i++) {
if (A[i] >= A[max_temp]) max_temp = i;
}
int temp = A[n-1];
A[n - 1] = A[max_temp];
A[max_temp] = temp;
select_sort(n - 1);
}
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
/*selectSort [O(n^2)]*/
make_num();
select_sort(SIZE);
print_arr();
return 0;
}