728x90
반응형
sort algorithm
sort 알고리즘은 헤더 파일에 속해 있으므로, #include <algorithm>
을 하여 사용해야 합니다.
sort(start, end)를 이용하여 [start,end)
범위에 속하는 인자들을 오름차순(default)으로 정렬할 수 있습니다.
따로 구현하지 않고 algorithm 헤더에 속한 sort을 사용하면, quick sort로 정렬된 결과를 얻을 수 있습니다.
vector 정렬 예
오름차순 정렬
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1,3,2,4,6,8};
printf("Before sort:::\n");
for(int i = 0; i < v.size(); i++)
printf("%d ", v[i]);
printf("\n");
sort(v.begin(), v.end());
printf("After sort:::\n");
for(int i = 0; i < v.size(); i++)
printf("%d ", v[i]);
printf("\n");
return 0;
}
내림차순 정렬
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1,3,2,4,6,8};
printf("Before sort:::\n");
for(int i = 0; i < v.size(); i++)
printf("%d ", v[i]);
printf("\n");
sort(v.begin(), v.end(), greater<int>());
printf("After sort:::\n");
for(int i = 0; i < v.size(); i++)
printf("%d ", v[i]);
printf("\n");
return 0;
}
사용자 정의 함수 정렬
Info 클래스를 생성하여, 해당 클래스 내의 name과 age 변수를 두고 name이 동일할 경우 age가 작은 순으로 정렬하도록 한 예제이다. 만약, name이 다르다면 name이 작은 순으로 정렬한다.
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
class Info{
public:
string name;
int age;
Info(string infoName, int infoAge) {
name = infoName;
age = infoAge;
}
};
bool compare(Info a, Info b) {
if(a.name == b.name) {
return a.age < b.age;
}
else return a.name < b.name;
}
int main()
{
vector<Info> v = {Info("abc", 1), Info("abc", 2), Info("abb", 2)};
printf("Before sort:::\n");
for (int i = 0; i < v.size(); i++)
printf("Name: %s, Age: %d\n", v[i].name.c_str(), v[i].age);
printf("\n");
sort(v.begin(), v.end(), compare);
printf("After sort:::\n");
for (int i = 0; i < v.size(); i++)
printf("Name: %s, Age: %d\n", v[i].name.c_str(), v[i].age);
printf("\n");
return 0;
}
728x90
반응형
'ALGORITHM > C++' 카테고리의 다른 글
[string] string to char vector/배열 (0) | 2020.12.04 |
---|---|
[vector] vector 개념 잡기 (0) | 2020.12.04 |