sort() 함수 사용하는 방법
#include <iostream>
#include <algorithm> // STL 라이브러리 -> sort() 함수가 정의되어있음
using namespace std;
bool compare(int a, int b) { // 비교 함수
return a > b; // 정렬 기준 : 내림차순 정렬
}
int main(void) {
int a[10] = { 9, 3, 5, 4, 1, 10, 8, 6, 7, 2 };
sort(a, a + 10); // a -> 메모리 주소, a + 10 -> 정렬할 마지막 주소가 있는 메모리 주소
sort(a, a + 10, compare); // 추가로 함수를 넣어주면 원하는 정렬 기준으로 정렬을 할 수 있다.
// => 9 ~ 2 까지의 주소를 정렬한다는 사실을 나타냄
for (int i = 0; i < 10; i++)
cout << a[i] << ' ';
}
sort() 함수는 C++의 algorithm 헤더에 포함되어 있고 기본적으로 오름차순으로 정렬을 수행한다.
기본적으로 사용하는 방법으론
sort(name, num) 으로 name은 해당 배열의 메모리 주소이고, num은 정렬할 마지막 주소가 있는 메모리 주소를 나타낸다.
=> sort(a, a+10)
sort(name, num, compare) compare은 원하는 정렬의 기준을 정의하여 그 기준으로 sort를 정렬한다.
=> sort(a, a+10, compare)
데이터를 묶어서 정렬하는 방법
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
class Student { // 여러 개의 변수를 하나로 묶기 위해서 사용
// 즉 하나의 객체를 정의하기 위해 사용
public:
string name;
int score;
Student(string name, int score) {
this->name = name;
this->score = score;
}
// 정렬 기준 정렬 ' 점수가 낮은 순서 -> 오름차순'
bool operator < (Student &student) {
return this->score < student.score;
}
};
int main(void) {
Student students[] = {
Student("잉여인간 1호", 99),
Student("잉여인간 2호", 92),
Student("잉여인간 3호", 95),
Student("잉여인간 4호", 80),
Student("잉여인간 5호", 89)
};
sort(students, students + 5);
for (int i = 0; i < 5; i++) {
cout << students[i].name << ' ';
}
}
반응형
'알고리즘 > 풀이 힌트' 카테고리의 다른 글
[알고리즘] 힙 정렬 (4) | 2022.02.10 |
---|---|
[알고리즘] C++ STL sort() 함수_Vector/Pair (2) | 2022.02.10 |
[알고리즘] 퀵 정렬_구현 (0) | 2022.02.09 |
[알고리즘] 퀵 정렬_원리 (0) | 2022.02.09 |
[알고리즘] 삽입 정렬 (0) | 2022.02.09 |