일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- SQL
- 프로그래머스
- 백준
- 문제풀이
- MYSQL
- 소프티어
- 정보처리산업기사
- 파이썬
- programmers
- 자바
- 스프링
- 1과목
- softeer
- java
- 백준알고리즘
- 회고
- python
- SW봉사
- kotlin
- 공부일지
- 데이터베이스
- 코틀린
- CJ UNIT
- C++
- 백준 알고리즘
- BFS
- 시나공
- 코딩교육봉사
- 알고리즘
- 코딩봉사
Archives
- Today
- Total
JIE0025
[ C++ ] sort , stable_sort 본문
728x90
sort()함수
#include <algorithm> 헤더 포함
- default 는 오름차순이다.
- 정렬 조건을 주고 싶을때 함수를 만들어 함수이름 자리에 넣어주면 된다. (필수 X )
sort(시작주소, 끝주소+1, 함수이름 )
1) 기본 배열의 sort
배열의 이름은 배열의 시작 주소값이므로 arr과
arr+ (요소의 개수) 를 단순하게 인자값으로 넣어주면 된다.
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int arr[5] = {3,7,1,9,5};
sort(arr, arr + 5);
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
return 0;
}
2) 벡터의 sort
vector는 동적할당되는 자료구조이므로
v.begin()과 v.end()를 사용하면 편리하다.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
vector <int> v = { 1,5,5,3,6,31,3 };
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
return 0;
}
3) sort 내림차순
3-1 함수 자리에 greater<> 임시객체 호출
#include <functional>
greater<>()
#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
int main() {
vector <int> v = { 1,5,5,3,6,31,3 };
sort(v.begin(), v.end(),greater<>());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
return 0;
}
3-2 함수제작
아래는 compare이라는 함수를 만들어서 sort에서 호출하는 방식이다.
return i > j 라고 되어 있는데 오른쪽에 있는 값(j)이 왼쪽에 있는 값(i)보다 작게 정렬하라는 뜻
즉 오른쪽으로 갈수록 작은 값이 나오게 한다는 뜻이다. (내림차순)
return i < j 를 할 경우엔 오른쪽으로 갈수록 큰 값이 나오겠지? (오름차순)
#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
bool compare(int i, int j) {
return i > j;
}
int main() {
int arr[5] = {3,7,1,9,5};
sort(arr, arr + 5, compare);
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
cout << endl;
vector <int> v = { 1,5,5,3,6,31,3 };
sort(v.begin(), v.end(), compare);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
return 0;
}
4) stable_sort()
다중 정렬시 많이 사용하는 친구는이다.
- 여러 값들이 묶여 있을 때하나의 요소로 정렬을 했을 떄 다른 요소의 정렬 순서도 정렬 전과 같이 유지 하는 정렬
#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
bool compare2(pair<int, string> a, pair<int, string>b) {
return a.first > b.first;
}
int main() {
int num = 4;
pair<int, string> p;
vector<pair<int, string>> v;
for (int i = 0; i < num; i++) {
cin >> p.first >> p.second;
v.push_back(p);
}
stable_sort(v.begin(), v.end(), compare2);
for (int i = 0; i < 4; i++) {
cout << v[i].first << " " << v[i].second << endl;
}
return 0;
}
'기타 학습 > Language' 카테고리의 다른 글
[Python] 얕은 복사, 깊은 복사 (0) | 2022.05.28 |
---|---|
[ C++ ] 상속 (0) | 2022.05.20 |
[ C++ ] 삼각형의 성립 조건 (0) | 2022.05.20 |
[ C++ ] 충돌 알고리즘 (0) | 2022.05.20 |
[ C++ ] 문자열을 숫자로 (stoi, stof, stol, stod) (0) | 2022.05.19 |