C++ - Compare(feat: sorting, algorithm)

2020. 3. 4. 10:40·Language/C++

알고리즘을 풀때 Sorting을 내림차순 또는 오름차순으로 하죠?~^^ 이때 보통 내림차순은 greater<int>()를 사용하여 내림차순 또는 오름차순을 정의했습니다. 하지만 비교대상이 일차원을 넘을경우 어떻게 처리하는지 알아보도록 하겠습니다.

 

Default 오름차순 Sorting - 오름차순으로 비교할때는 그냥 Sorting을 하면 됩니다~

#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main(){
    vector<int>a;
    a.push_back(1);
    a.push_back(31);
    a.push_back(14);
    a.push_back(12);
    a.push_back(11);
    a.push_back(15);
    a.push_back(2);
    sort(a.begin(),a.end());
    for(int number:a) cout<<number<<"\n";
    return 0;
}

내림차순 Sorting - greater<int>() 원소가 하나일 때~

#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main(){
    vector<int>a;
    a.push_back(1);
    a.push_back(31);
    a.push_back(14);
    a.push_back(12);
    a.push_back(11);
    a.push_back(15);
    a.push_back(2);
    sort(a.begin(),a.end(),greater<int>());
    for(int number:a) cout<<number<<"\n";
    return 0;
}

내림차순 Sorting 비교대상이 하나이상 - vector, pair 이용할 때~ 

#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
bool compare(pair<int,int>a,pair<int,int>b){
    if(a.first==b.first) 
    	return a.second>b.second;
    else 
    	return a.first>b.first;
}
int main(){
    vector<pair<int,int> >a;
    a.push_back(make_pair(1,23));
    a.push_back(make_pair(3,45));
    a.push_back(make_pair(532,34));
    a.push_back(make_pair(11,34));
    a.push_back(make_pair(11,94));
    a.push_back(make_pair(15,917));
    a.push_back(make_pair(2,88));
    sort(a.begin(),a.end(),compare);
    for(int i=0;i<a.size();i++){
        cout<<a[i].first<<" "<<a[i].second<<"\n";
    } 
    return 0;
}

내림차순 Sorting 비교대상이 하나이상 - vector, pair 2개 이상~

 

#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
bool compare(pair<int,pair<int,int> >a,pair<int,pair<int,int> >b){
    if(a.first == b.first){
        if(a.second.first == b.second.first) return a.second.second > b.second.second;
        else return a.second.first > b.second.first;
    }
    else return a.first > b.first;
}
int main(){
    vector<pair<int,pair<int,int> > >a;
    a.push_back(make_pair(1,make_pair(1,6)));
    a.push_back(make_pair(5,make_pair(2,5)));
    a.push_back(make_pair(2,make_pair(9,7)));
    a.push_back(make_pair(59,make_pair(2,2)));
    a.push_back(make_pair(2,make_pair(5,9)));
    sort(a.begin(),a.end(),compare);
    for(int i=0;i<a.size();i++){
        cout<<a[i].first<<"::"<<a[i].second.first<<"::"<<a[i].second.second<<"\n";
    } 
    return 0;
}

이제 직접 크기대소 compare function을 만들어 사용하시면 더욱 효육적을 코딩할 수 있을것입니다~ ^0^

 

'Language > C++' 카테고리의 다른 글

C++ - 입출력 효율성 증가시키는 방법  (0) 2020.03.30
소수 구하기 (에라토스테네스의 체)  (0) 2020.03.19
C++ - Array Size  (0) 2020.03.04
C++ - 범위 기반 for문 (feat: range based for statement)  (0) 2020.03.04
매개변수 - 2차원 배열  (0) 2020.01.28
'Language/C++' 카테고리의 다른 글
  • 소수 구하기 (에라토스테네스의 체)
  • C++ - Array Size
  • C++ - 범위 기반 for문 (feat: range based for statement)
  • 매개변수 - 2차원 배열
dev.wookii
dev.wookii
Effort Maketh Happiness
  • dev.wookii
    습관처럼
    dev.wookii
  • 전체
    오늘
    어제
    • 분류 전체보기 (295)
      • Language (35)
        • python (13)
        • C++ (22)
      • Kaggle (4)
      • Algorithms (112)
        • BOJ (58)
        • programmers (43)
        • SWExpertAcademy (2)
      • Certification (38)
        • Adsp (0)
        • Sqld (28)
        • 정처기 (9)
        • 빅데이터 분석기사 (0)
      • Data Analysis & ML (6)
      • 금융 & 디지털 (65)
      • CS (32)
        • DB (2)
        • SE (3)
        • Web&JSP (1)
        • Network (11)
        • OS (2)
        • Linux&Unix (6)
        • Server (1)
        • UX,UI (1)
        • 보안 (5)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    programmers
    funny algorithms
    Ebay korea #coding test
    시뮬레이션
    2020 KAKAO
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.wookii
C++ - Compare(feat: sorting, algorithm)
상단으로

티스토리툴바