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
'👨🏫Study > C++' 카테고리의 다른 글
[C++] 05 - 파일 입출력(fstream, ifstream, ofstream) (0) | 2021.08.04 |
---|---|
[C++] 04 - swtich문, if문, while문, for문 (0) | 2021.08.04 |
[C++] atoi(문자열을 정수로), itoa(정수를 문자열로) (0) | 2021.07.30 |
[C++] set 자료구조 (0) | 2021.07.29 |
[C++] memset 함수 (0) | 2021.07.26 |
댓글