Algorithm/TIP
[c++] compare 함수 (sort / priority queue)
IagreeBUT
2022. 10. 21. 23:13
728x90
a>b
sort: 큰거부터
pq : 작은거부터
a<b
sort: 작은거부터
pq:큰거부터
SORT
sort의 queue는 false를 반환해야 swap
bool compare(int a, int b){
return a>b ; //내림차순
}
sort(arr.begin(), arr.end(), compare);
기본 정렬은 오름차순 정렬(1,2,3...) 이며,
내림차순 정렬은 다음과 같다
sort(arr.begin(), arr.end(), greater<int>());
PRIORITY QUEUE
priority queue의 compare는 true를 반환해야 swap
부모와 자식의 위치가 swap된다
struct compare{
bool operator()(int a, int b){
return a>b; // true인 경우 부모와 자식이 바뀐다
}
};
int main(){
priority_queue<int, vector<int>, compare> pq; // -> 가장 작은 값이 root
}
struct compare{
bool operator()(pair<int,int> a, pair<int,int> b){
return a.second > b.second; //second를 기준으로 오름차순 (min heap
}
};
priority_queue<pair<int,int>>, vector<pair<int,int>>, compare> pq;
728x90