https://www.acmicpc.net/problem/2750
solution 1) 선택 정렬 이용
: 선택 정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지와 차례대로 비교하여 그 중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하며 정렬을 수행한다.
: in-place 정렬로 입력 배열 이외의 메모리를 요구하지 않는 알고리즘이다.
#include<iostream>
#include<vector>
using namespace std;
void selection_sort(vector<int>list,int n) {
int least = 0;
int temp = 0;
for (int i = 0; i < n; i++) {
least = i;
for (int k = i + 1; k < n; k++) {
if (list[k] < list[least]) {
least = k;
}
}
if (i != least) {
swap(list[i], list[least]);
}
}
for (int j = 0; j < n; j++) {
cout << list[j] << endl;
}
}
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int M;
vector<int>arr;
cin >> M;
for (int i = 0; i < M; i++) {
int x;
cin >> x;
arr.push_back(x);
}
selection_sort(arr, M);
}
solution 2) STL sort 사용
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
int main() {
int M;
vector<int>arr;
cin >> M;
for (int i = 0; i < M; i++) {
int x;
cin >> x;
arr.push_back(x);
}
sort(arr.begin(), arr.end());
for (int j = 0; j < M; j++) {
cout << arr[j] << endl;
}
}
'Computer Science > 알고리즘(백준+프로그래머스)' 카테고리의 다른 글
[문제해결기법 2주차] Error (0) | 2020.04.05 |
---|---|
[문제해결 기법 1주차] 과소비 알람 (0) | 2020.04.01 |
[문제해결기법 1주차] DNA (0) | 2020.03.26 |
[문제해결기법 2주차] Game (0) | 2020.03.26 |
백준 2751) 수 정렬하기 2 (0) | 2020.01.09 |