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