사용 헤더
#include <algorithm>
배열에 sort 사용하기
오름차순(default)
sort(arr, arr+n)
이때 n은 배열 원소의 갯수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <algorithm>
#include <iostream>
using namespace std;
void printArr(int *arr) {
cout << "[ ";
for (int i = 0; i < 5; i++)
cout << arr[i] << " ";
cout << "]\n\n";
}
int main() {
int arr[] = { 4,5,2,3,1 };
cout << "정렬 전\n";
printArr(arr);
sort(arr, arr + 5);
cout << "정렬 후\n";
printArr(arr);
return 0;
}
|
cs |
내림차순
배열에서 내림차순을 하기 위해서는 아래와 같이 새로 함수를 만들어 sort에 넣어주면 된다.
1
2
3
|
bool desc(int a, int b) {
return a > b;
}
|
cs |
sort(arr, arr + 5, desc);
이때, desc는 임의의 함수명이다.
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
|
#include <algorithm>
#include <iostream>
using namespace std;
void printArr(int *arr) {
cout << "[ ";
for (int i = 0; i < 5; i++)
cout << arr[i] << " ";
cout << "]\n\n";
}
bool desc(int a, int b) {
return a > b;
}
int main() {
int arr[] = { 4,5,2,3,1 };
cout << "정렬 전\n";
printArr(arr);
sort(arr, arr + 5, desc);
cout << "정렬 후\n";
printArr(arr);
return 0;
}
|
cs |
벡터에 sort 사용하기
오름차순(default)
sort(v.begin(), v.end());
벡터의 시작과 끝을 인수로 넣어주면 된다.
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
|
#include <algorithm>
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
void printVec(vector<int> &v) {
cout << "[ ";
for (int i = 0; i < 5; i++)
cout << v[i] << " ";
cout << "]\n\n";
}
int main() {
srand((unsigned int)time(NULL));
vector<int> v;
for (int i = 0; i < 5; i++)
v.push_back(rand() % 10);
cout << "정렬 전\n";
printVec(v);
sort(v.begin(), v.end());
cout << "정렬 후\n";
printVec(v);
return 0;
}
|
cs |
내림차순
sort(v.begin(), v.end(), greater<자료형(type)>());
내림차순을 할때는 greater를 넣어준다.
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
|
#include <algorithm>
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
void printVec(vector<int> &v) {
cout << "[ ";
for (int i = 0; i < 5; i++)
cout << v[i] << " ";
cout << "]\n\n";
}
int main() {
srand((unsigned int)time(NULL));
vector<int> v;
for (int i = 0; i < 5; i++)
v.push_back(rand() % 10);
cout << "정렬 전\n";
printVec(v);
sort(v.begin(), v.end(), greater<int>());
cout << "정렬 후\n";
printVec(v);
return 0;
}
|
cs |
'프로그래밍 언어 > C, C++' 카테고리의 다른 글
[C언어] GNU readline 사용법 (1) | 2022.01.18 |
---|---|
[C/C++] atoi 구현 / 문자열을 숫자로 (11) | 2021.04.18 |
[C언어] 문자열을 숫자로, 숫자를 문자열로 (0) | 2021.01.27 |
[C언어] 배열, 구조체의 원소 개수 구하기 / sizeof 사용법 (0) | 2020.11.13 |
[C/C++] 최대공약수 구하기 (0) | 2020.10.31 |