Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 하둡
- 자바
- 정렬
- MongoDB Realm
- golang struct
- String 함수
- 백준
- 트리 순회
- 고 배열
- 도메인 주도 개발 시작하기
- 자바 디자인패턴
- 백준 12761번
- http 완벽가이드
- 백준 파이썬
- 파이썬
- 12761번 돌다리
- 백준 12761
- go
- hadoop
- 몽고디비 렘
- golang
- 우분투
- http 개념
- 백준 사이트
- 도메인 주도 개발
- 12761 돌다리
- flask
- 자바 디자인 패턴
- domain driven develop
- ddd
Archives
- Today
- Total
개발바닥
C++ sort 비교 함수 본문
반응형
C++ algorithm 헤더 파일에 있는 sort 정렬 방법에 대해서 알아보겠습니다.
sort() 함수는 Default로 오름차순 정렬을 한다.
배열의 경우
첫번째 인자 시작지점 = 배열의 포인터
두번째 인자 끝나는지점 +1 = 배열의 포인터 + 배열의 크기
벡터의 경우
첫번째 인자 시작지점 = iterator의 begin()
두번째 인자 끝나는지점 +1 = iterator의 end()
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef struct {
int x;
int y;
}Point;
//const와 &를 통해서 레퍼런스로 받아오는걸 잊지말자.
//내림차순 정렬
bool cmp(const int &a, const int &b) {
if (a > b) return true;
else return false;
}
//const와 &를 통해서 레퍼런스로 받아오는걸 잊지말자.
//x순으로 정렬하고 x값이 같으면 y순으로 각각 오름차순으로 정렬
bool cmp_asc(const Point &a, const Point &b) {
if (a.x < b.x) return true;
else if (a.x == b.x) {
if (a.y <= b.y) return true;
else return false;
}
else return false;
}
//const와 &를 통해서 레퍼런스로 받아오는걸 잊지말자.
//x순으로 정렬하고 x값이 같으면 y순으로 각각 내림차순으로 정렬
bool cmp_desc(const Point &a, const Point &b) {
if (a.x > b.x) return true;
else if (a.x == b.x) {
if (a.y > b.y)return true;
else return false;
}
else return false;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int arr[5] = { 5,2,1,4,3 };
vector<int> arr_v;
vector<Point> arr_v_pos;
arr_v.push_back(5);
arr_v.push_back(2);
arr_v.push_back(1);
arr_v.push_back(4);
arr_v.push_back(3);
arr_v_pos.push_back({ 1,4 });
arr_v_pos.push_back({ 2,5 });
arr_v_pos.push_back({ 1,1 });
arr_v_pos.push_back({ 1,3 });
arr_v_pos.push_back({ 3,5 });
cout << "===========정렬 전=============\n";
for (auto n = arr_v.begin(); n != arr_v.end(); n++) {
cout << *n << ' ';
}cout << '\n';
for (auto pos = arr_v_pos.begin(); pos != arr_v_pos.end(); pos++) {
cout << pos->x << ' ' << pos->y << '\n';
}
cout << "===========Array 오름 차순 정렬=============\n";
sort(arr, arr + 5);
for (auto n = arr; n != arr+5; n++) {
cout << *n << ' ';
}cout << '\n';
cout << "===========Vector 오름 차순 정렬=============\n";
//오름 차순 정렬
sort(arr_v.begin(), arr_v.end());
for (auto n = arr_v.begin(); n != arr_v.end(); n++) {
cout << *n << ' ';
}cout << '\n';
cout << "===========Array 내림 차순 정렬=============\n";
sort(arr, arr + 5,cmp);
for (auto n = arr; n != arr + 5; n++) {
cout << *n << ' ';
}cout << '\n';
cout << "===========Vector 내림 차순 정렬=============\n";
//내림 차순 정렬
sort(arr_v.rbegin(), arr_v.rend());
for (auto n = arr_v.begin(); n != arr_v.end(); n++) {
cout << *n << ' ';
}cout << '\n';
cout << "===========Vector Point 오름 차순 정렬=============\n";
//오름 차순 정렬
sort(arr_v_pos.begin(), arr_v_pos.end(),cmp_asc);
for (auto pos = arr_v_pos.begin(); pos != arr_v_pos.end(); pos++) {
cout << pos->x << ' ' << pos->y << '\n';
}
cout << "===========Vector Point 내림 차순 정렬=============\n";
//내림 차순 정렬
sort(arr_v_pos.begin(), arr_v_pos.end(), cmp_desc);
for (auto pos = arr_v_pos.begin(); pos != arr_v_pos.end(); pos++) {
cout << pos->x << ' ' << pos->y << '\n';
}
return 0;
}
결과 화면
반응형
'개인 공부' 카테고리의 다른 글
C++ 반복자(Iterator) (0) | 2020.03.27 |
---|---|
C++ 소수점 출력하기 (0) | 2020.03.27 |
Comments