-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathsort.cpp
More file actions
87 lines (69 loc) · 3.16 KB
/
Copy pathsort.cpp
File metadata and controls
87 lines (69 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//############################################################
// | cafe | http://cafe.naver.com/dremdelover |
// | Q&A | https://open.kakao.com/o/gX0WnTCf |
// | business | ultrasuperrok@gmail.com |
//############################################################
#include <iostream>
#include <vector>
#include <algorithm> // sort() 함수가 포함된 헤더
using namespace std; // std 네임스페이스를 사용
// 사용자 정의 비교 함수
bool compare(int a, int b) {
// 내림차순 정렬을 위한 비교: a가 b보다 클 때 true를 반환
// sort 함수가 비교 시 compare(a, b)가 true를 반환하면 a가 b보다 앞에 있어야 한다고 판단하여 a와 b의 위치를 교환하지 않음
return a > b;
}
int main() {
// 정렬할 벡터 생성
vector<int> v = {5, 2, 9, 1, 5, 6};
// 벡터를 오름차순으로 정렬
// std::sort는 기본적으로 < 연산자를 사용하여 정렬
// v.begin()은 첫 번째 요소, v.end()는 마지막 요소의 다음 위치를 가리킴 (v.end()는 정렬 대상에 포함되지 않음)
sort(v.begin(), v.end());
// 오름차순으로 정렬된 벡터 출력
cout << "오름차순 정렬: ";
for (int n : v) {
cout << n << ' ';
}
cout << endl;
// 출력값: 1 2 5 5 6 9
// 벡터를 다시 섞어서 초기 상태로 되돌림
v = {5, 2, 9, 1, 5, 6};
// 벡터를 사용자 정의 비교 함수로 정렬 (내림차순)
// std::sort는 compare 함수가 true를 반환할 때 첫 번째 요소가 두 번째 요소보다 앞에 있어야 한다고 판단
// compare 함수는 a > b일 때 true를 반환하므로, 큰 값이 작은 값 앞에 오게 되어 내림차순 정렬이 이루어짐
sort(v.begin(), v.end(), compare);
// 내림차순으로 정렬된 벡터 출력
cout << "내림차순 정렬: ";
for (int n : v) {
cout << n << ' ';
}
cout << endl;
// 출력값: 9 6 5 5 2 1
// 벡터를 다시 섞어서 초기 상태로 되돌림
v = {5, 2, 9, 1, 5, 6};
// 벡터의 앞 3개 요소만 오름차순으로 정렬
// v.begin()에서 v.begin() + 3까지 정렬
// 정렬 범위: [5, 2, 9] (v.begin() + 3는 정렬 대상에 포함되지 않음)
sort(v.begin(), v.begin() + 3);
// 부분 정렬된 벡터 출력
cout << "부분 정렬 (앞 3개 요소 오름차순): ";
for (int n : v) {
cout << n << ' ';
}
cout << endl;
// 출력값: 2 5 9 1 5 6
// 벡터를 다시 섞어서 초기 상태로 되돌림
v = {5, 2, 9, 1, 5, 6};
// 역방향 반복자를 사용하여 벡터를 내림차순으로 정렬
// v.rbegin()은 마지막 요소, v.rend()는 첫 번째 요소의 이전 위치를 가리킴 (v.rend()는 정렬 대상에 포함되지 않음)
sort(v.rbegin(), v.rend());
// 역방향으로 정렬된 벡터 출력
cout << "역방향 반복자로 정렬 (내림차순): ";
for (int n : v) {
cout << n << ' ';
}
cout << endl;
// 출력값: 9 6 5 5 2 1
return 0;
}