본문 바로가기
👨‍🏫Study/C++

[C++] sort 함수 정리

by 코푸는 개발자 2021. 7. 27.
728x90

sort 함수를 사용하기 위해서는 algorithm이라는 라이브러리를 include해주어야 한다.

sort 함수의 파라미터 형태

sort(배열의 시작주소, 배열의 마지막주소, (조건함수명)) 를 작성하여주면 된다.

여기서 default값은 오름차순으로 실행된다.

 

<예시 코드>

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
bool compare(int a, int b) return a<b;

int main(){
	//배열일 경우
    int arr[10]={5,4,6,3,7,8,2,10,9,1};
    sort(arr,arr+10);// 1,2,3,4,5,6,7,8,9,10 오름차순 정렬
    sort(arr,arr+10,compare);// 10,9,8,7,6,5,4,3,2,1 내림차순 정렬
    //벡터일 경우
    vector<int>v(10)={5,4,6,3,7,8,2,10,9,1};
    sort(v.begin(),v.end());// 1,2,3,4,5,6,7,8,9,10 오름차순 정렬
    sort(arr,arr+10,compare);// 10,9,8,7,6,5,4,3,2,1 내림차순 정렬
}

 

특정 형태의 자료 배열 정렬

#include <iostream>
#include <algorithm>

using namespace std;

class Student{
public:
    string name;
    int point;
    Student(string name,int point){
        this->name=name;
        this->point=point;
    }
    //점수기준 오름차순 정렬
    bool operator < (Student &student){
        return this->point < student.point;
    }
};

int main(){
    Student students[]={
        Student("김소민",5),
        Student("박창현",3),
        Student("문하윤",4),
        Student("허재경",1),
        Student("박수호",2)
    };
    
    sort(students,students+5);
    for(int i=0;i<5;i++){
        cout << students[i].name<<' ';// 허재경 박수호 박창현 문하윤 김소민(점수 기준 오름차순)
    }
    return 0;
}

특정 구조체가 원소인 벡터관련 정렬 예시

struct info
{
	int start;
	int end;
	int num;
};

bool compare(info a, info b) {
	if (a.end != b.end)
		return a.end < b.end;
	else if (a.start != b.start)
		return a.start > b.start;
	else
		return a.num > b.num;
}

int main(){
	vector<info>v;
    sort(v.begin(), v.end(), compare);
	// 이렇게 한다면 end인자 순으로 우선 정렬하고 end가 같다면 start원소 그다음 num원소 순위로 
	// 우선순위를 주어 정렬합니다.

return 0;
}
728x90

댓글