반응형
Notice
Recent Posts
Recent Comments
Link
DNF LOVE
C++에서 <algorithm>을 사용하여 정렬을 해보도록 하자. 본문
반응형
SORT알고리즘은 <algorithm> 헤더 파일에 존재한다.
* Sort(start, end)를 이용하여 (Start, End) 범우에 있는 인자를 오름차순으로(기본) 정렬해주는 함수이다. iterator 처럼 start를 포함하고, End 를 포함하지 않는 구간을 말한다.
* Sort는 퀵 정렬을 기반으로 구현되어 있으며 O(nlongN)이다.
1. 오름차순(Default)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(5);
v.push_back(2);
v.push_back(1);
v.push_back(10);
v.push_back(1);
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << endl;
}
return 0;
}
2. 내림차순(DESC)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(5);
v.push_back(2);
v.push_back(1);
v.push_back(10);
v.push_back(1);
sort(v.begin(), v.end(), greater<int>());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << endl;
}
return 0;
}
3. compare 사용
#include "pch.h"
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
class Product {
public :
string pname;
int pay;
Product(string pname, int pay) : pname(pname), pay(pay) {}
};
bool compare(Product a, Product b) {
if (a.pay == b.pay) {
return a.pname < b.pname; // 페이가 같으면 이름 가나다라 순
}
else {
return a.pname > b.pname; // 페이가 다르면 작은 순부터
}
}
int main(void)
{
vector<Product> v;
v.push_back(Product("멘토스", 700));
v.push_back(Product("멘토스", 1000));
v.push_back(Product("비틀즈", 700));
v.push_back(Product("비틀즈", 1200));
v.push_back(Product("새콤달콤", 500));
sort(v.begin(), v.end(), compare);
for (int i = 0; i < 5; i++) {
cout << v[i].pname << " : " << v[i].pay << endl;
}
return 0;
}
반응형
'Programming > C++' 카테고리의 다른 글
C++ 문법> String to char, char to String 형변환 (0) | 2019.10.23 |
---|---|
c++> int to string(int -> string), string to int(string -> int) 형변환 (0) | 2019.10.23 |
c++의 형변환(Typecasting) 몇 가지(reinterpret_cast, static_cast) (0) | 2019.10.23 |
함수 호출> Call By Reference 와 Call By Value에 대한 차이점과 설명 (0) | 2019.10.22 |
C/C++ Pointer 개념과 실행 예제 (0) | 2019.10.22 |