์๋ ํ์ธ์ ์ฃผ์ธ์ฅ H์ ๋๋ค.
์ค๋์ ๊ธฐ์กด์ ๋ฐฐ์ด ์ ๋ ฌ๋ณด๋ค ์ข๋ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ ๋ ฌ์ ์งํํ๋ ค ํฉ๋๋ค.
sortํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก quicksort์ ์ ์ฌํ๊ฒ ์งํ ๋์ง๋ง ์ฐจ์ด์ ์ผ๋ก
O(log N * N)๊ฐ ๋ณด์ฅ๋๋ค๋ ์ฅ์ ์ด ์์ฃ
๊ฐ๋จํ๊ฒ ์์ ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
#include <iostream>
#include <algorithm>
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;
}
};
//bool compare(int a, int b) {
// return a > b;
//}
int main(void) {
Student students[] = {
Student("kim",90),
Student("choi",93),
Student("pack",97),
Student("heo",87),
Student("lee",92),
};
sort(students, students + 5);
for (int i = 0; i < 5; i++) {
cout << students[i].name << ' ';
}
}
์ฃผ์์ฒ๋ฆฌ๋ compare ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด ๊ฐ๋ฅํ์ง๋ง, ์ง๊ธ์ class ๋ด ๋น๊ต๊ตฐ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๊ฒ ์ต๋๋ค.
ํ์ง๋ง class๋ ์ค์ ์ค๋ฌด์์ ๋ง์ด ์ฐ์ด๊ณ ์๊ณ ๋ฆฌ์ฆ ๋ํ์์ shotcoding ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํฉ๋๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//๋ฐฑํฐ ๋ผ์ด๋ฒ๋ฆฌ๋ฆฌ์ ํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ ์์ฝ๋ฉ
int main(void) {
vector<pair<int, string>> v;
v.push_back(pair<int, string>(90,"park"));
v.push_back(pair<int, string>(85, "lee"));
v.push_back(pair<int, string>(82, "na"));
v.push_back(pair<int, string>(87, "kang"));
v.push_back(pair<int, string>(79, "choi"));
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
cout << v[i].second << ' ';
}
return 0;
}
์ด๋ ๊ฒ ๋ฒกํฐ์ ํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ํจ์ ๋น ๋ฅด๊ฒ ์ฝ๋๋ฅผ ์ง์ค ์ ์์ต๋๋ค.
๊ทธ๋ผ ๋ง์ง๋ง์ผ๋ก ์ธ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด๋ณด๋ ์ฝ๋๋ฅผ ์ ์ด๋ณด๊ฒ ์ต๋๋ค.
//ํ์์ ๋ํ๋ผ ์ ์๋ ์ ๋ณด๊ฐ ์ด๋ฆ, ์ฑ์ ,์๋
์์ผ์ผ ๋
//ํ์์ ์ฑ์ ์์๋๋ก ๋์ดํ๊ณ ์ ํ๋ค.
//๋ค๋ง ์ฑ์ ์ด ๋์ผํ ๊ฒฝ์ฐ ๋์ด๊ฐ ๋ ์ด๋ฆฐ ํ์์ด ๋ ์ฐ์ ์์๊ฐ ๋๋ค.
//๋จผ์ ์ฑ์ ์ ๋ฐ๋ผ ์ ๋ ฌ ํ, ์ฑ์ ์ด ๊ฐ์ ๊ฒฝ์ฐ ๋์ด๊ฐ ๋ ์ด๋ฆฐ ์ฌ๋
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<string, pair<int, int>> a,
pair<string, pair<int, int>> b) {
if (a.second.first == b.second.first) {
return a.second.second > b.second.second;
}
else {
return a.second.first > b.second.first;
}
}
int main(void) {
vector<pair<string, pair<int, int>>> v;
v.push_back(pair<string, pair<int, int>>("๋๋๋น", make_pair(90, 19961212)));
v.push_back(pair<string, pair<int, int>>("์ดํ์ผ", make_pair(97, 19930518)));
v.push_back(pair<string, pair<int, int>>("๋ฐํ์ธ", make_pair(95, 19930203)));
v.push_back(pair<string, pair<int, int>>("์ด์์ฑ", make_pair(90, 19921207)));
v.push_back(pair<string, pair<int, int>>("๊ฐ์ข
๊ตฌ", make_pair(88, 19900302)));
sort(v.begin(), v.end(), compare);
for (int i = 0; i < v.size(); i++) {
cout << v[i].first << ' ';
}
return 0;
}
ํด๋น ์์ ๋ ์๋ ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๊ณต๋ถํ์ต๋๋ค.
https://blog.naver.com/ndb796/221227975229
'์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] counting sort ๊ณ์์ ๋ ฌ (0) | 2020.08.18 |
---|---|
[์๋ฃ๊ตฌ์กฐ] ์ํฅ์ ํ์ ๋ ฌ heapsort (0) | 2020.08.13 |
[์๋ฃ๊ตฌ์กฐ] ๋ณํฉ์ ๋ ฌ merge sort (0) | 2020.08.06 |
[์๋ฃ๊ตฌ์กฐ] ํต์ ๋ ฌ Quick Sort (0) | 2020.08.04 |
[์๋ฃ๊ตฌ์กฐ] ๋ฒ๋ธ์ ๋ ฌ Bubble Sort (0) | 2020.08.04 |