Skip to content

Commit c918a71

Browse files
committed
add merge sort
1 parent 83d4cba commit c918a71

File tree

8 files changed

+269
-0
lines changed

8 files changed

+269
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
50
2+
OrBVohrvpC 715 431773
3+
eirEivyvAa 715 165540
4+
KjJHlUcVnz 715 352595
5+
OEUiianXXZ 715 318947
6+
JXGfosDsye 66804 113160
7+
MFxpjSanWK 715 487824
8+
zMzmvUGuGh 66804 17828
9+
bDSGcZIaKq 715 969366
10+
CNlLGWWKQe 66804 445183
11+
kcGCukKfWq 66804 574020
12+
HuRuUNaezV 66804 768210
13+
xpRqoYGcGJ 715 678948
14+
aLxfhRCqIp 715 519942
15+
ibYDhGlHzM 715 830427
16+
LpElaojxaF 715 864609
17+
cWmoVjYpDf 66804 567283
18+
OfQcAwuwXi 715 196891
19+
SSMqcEYktN 66804 727141
20+
LpHERtAdzy 715 73227
21+
OXwNeawLFx 66804 25641
22+
ueckQiHEJV 66804 618270
23+
NVDOWtumBS 715 536959
24+
UIWKyflVhA 66804 893225
25+
uuCqfpqyWR 66804 169839
26+
JEJEQzTIUX 715 611235
27+
gVrIvwzugU 66804 793643
28+
vKvGGIqIvN 715 267026
29+
KZXcBGeDGY 715 434566
30+
JYYdojqsrw 66804 926743
31+
rDvdAAKxpB 66804 777022
32+
qslREMheCu 715 798784
33+
yMqlPlGaDe 66804 667700
34+
tTXmWAgmYH 715 799979
35+
HtZmRgyItd 66804 707371
36+
LjCcTzhwjx 66804 23219
37+
KnbSzMzPwW 715 697292
38+
OYWFlPwKOS 715 299086
39+
OSpxYKcOPo 715 268765
40+
rBxEuvHACu 715 238474
41+
KzoXdmDoDd 66804 108753
42+
wwtbyStoDA 715 823399
43+
LKbkqxicwT 66804 528992
44+
OLfbxiTyeZ 66804 903846
45+
CeUkDQvPUb 66804 925552
46+
KOkLTrvdMu 715 840337
47+
dybfwTOIkH 66804 190358
48+
cVtaKuvjrX 66804 532902
49+
FLIwCXNjMS 66804 103848
50+
FwUkpQjBnr 715 643962
51+
LnVRaCEeUz 66804 198720
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
JYYdojqsrw 66804 926743
2+
CeUkDQvPUb 66804 925552
3+
OLfbxiTyeZ 66804 903846
4+
UIWKyflVhA 66804 893225
5+
gVrIvwzugU 66804 793643
6+
rDvdAAKxpB 66804 777022
7+
HuRuUNaezV 66804 768210
8+
SSMqcEYktN 66804 727141
9+
HtZmRgyItd 66804 707371
10+
yMqlPlGaDe 66804 667700
11+
ueckQiHEJV 66804 618270
12+
kcGCukKfWq 66804 574020
13+
cWmoVjYpDf 66804 567283
14+
cVtaKuvjrX 66804 532902
15+
LKbkqxicwT 66804 528992
16+
CNlLGWWKQe 66804 445183
17+
LnVRaCEeUz 66804 198720
18+
dybfwTOIkH 66804 190358
19+
uuCqfpqyWR 66804 169839
20+
JXGfosDsye 66804 113160
21+
KzoXdmDoDd 66804 108753
22+
FLIwCXNjMS 66804 103848
23+
OXwNeawLFx 66804 25641
24+
LjCcTzhwjx 66804 23219
25+
zMzmvUGuGh 66804 17828
26+
bDSGcZIaKq 715 969366
27+
LpElaojxaF 715 864609
28+
KOkLTrvdMu 715 840337
29+
ibYDhGlHzM 715 830427
30+
wwtbyStoDA 715 823399
31+
tTXmWAgmYH 715 799979
32+
qslREMheCu 715 798784
33+
KnbSzMzPwW 715 697292
34+
xpRqoYGcGJ 715 678948
35+
FwUkpQjBnr 715 643962
36+
JEJEQzTIUX 715 611235
37+
NVDOWtumBS 715 536959
38+
aLxfhRCqIp 715 519942
39+
MFxpjSanWK 715 487824
40+
KZXcBGeDGY 715 434566
41+
OrBVohrvpC 715 431773
42+
KjJHlUcVnz 715 352595
43+
OEUiianXXZ 715 318947
44+
OYWFlPwKOS 715 299086
45+
OSpxYKcOPo 715 268765
46+
vKvGGIqIvN 715 267026
47+
rBxEuvHACu 715 238474
48+
OfQcAwuwXi 715 196891
49+
eirEivyvAa 715 165540
50+
LpHERtAdzy 715 73227
1.8 KB
Binary file not shown.
3.43 MB
Binary file not shown.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include "models/civilization/Civilization.h"
4+
#include "models/civilization/Civilization.cpp"
5+
6+
using namespace std;
7+
8+
void swap(vector<Civilization> &v, int x, int y) {
9+
Civilization temp = v[x];
10+
v[x] = v[y];
11+
v[y] = temp;
12+
}
13+
14+
bool mustSwap(const Civilization &c1, const Civilization &c2) {
15+
if (c1.getDistance() > c2.getDistance()) return true;
16+
else if (c1.getDistance() < c2.getDistance()) return false;
17+
else {
18+
if (c1.getSize() > c2.getSize()) return true;
19+
else return false;
20+
}
21+
}
22+
23+
void merge(vector<Civilization> &vec, int l, int m, int r) {
24+
int n1 = m - l + 1;
25+
int n2 = r - m;
26+
Civilization L[n1], R[n2];
27+
28+
for (int i = 0; i < n1; i++)
29+
L[i] = vec[l + i];
30+
for (int j = 0; j < n2; j++)
31+
R[j] = vec[m + 1 + j];
32+
33+
int i = 0;
34+
int j = 0;
35+
int k = l;
36+
37+
while (i < n1 && j < n2) {
38+
if (mustSwap(L[i], R[j])) {
39+
vec[k] = L[i];
40+
i++;
41+
} else {
42+
vec[k] = R[j];
43+
j++;
44+
}
45+
k++;
46+
}
47+
48+
while (i < n1) {
49+
vec[k] = L[i];
50+
i++;
51+
k++;
52+
}
53+
54+
while (j < n2) {
55+
vec[k] = R[j];
56+
j++;
57+
k++;
58+
}
59+
}
60+
61+
void mergeSort(vector<Civilization> &vec, int L, int R) {
62+
if (L < R) {
63+
int m = L + (R - L) / 2;
64+
mergeSort(vec, L, m);
65+
mergeSort(vec, m + 1, R);
66+
merge(vec, L, m, R);
67+
}
68+
}
69+
70+
int main() {
71+
int N = 0;
72+
cin >> N;
73+
vector<Civilization> civilizations(0);
74+
char input[100];
75+
int distance;
76+
int size;
77+
while (scanf("%s %i %i", &input, &distance, &size) != EOF) {
78+
civilizations.push_back(new Civilization(input, distance, size));
79+
}
80+
int MAX_LENGTH = civilizations.size();
81+
mergeSort(civilizations, 0, MAX_LENGTH);
82+
for (auto &&civilization : civilizations) {
83+
cout << civilization.getName().c_str() << " " << civilization.getDistance() << " " << civilization.getSize()
84+
<< "\n";
85+
}
86+
return 0;
87+
}
88+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// Created by luis on 19/10/2020.
3+
//
4+
5+
#include "Civilization.h"
6+
7+
#include <utility>
8+
9+
const string &Civilization::getName() const {
10+
return name;
11+
}
12+
13+
void Civilization::setName(const string &name) {
14+
Civilization::name = name;
15+
}
16+
17+
int Civilization::getDistance() const {
18+
return distance;
19+
}
20+
21+
void Civilization::setDistance(int distance) {
22+
Civilization::distance = distance;
23+
}
24+
25+
int Civilization::getSize() const {
26+
return size;
27+
}
28+
29+
void Civilization::setSize(int size) {
30+
Civilization::size = size;
31+
}
32+
33+
Civilization::Civilization(string name, int distance, int size) : name(std::move(name)), distance(distance), size(size) {}
34+
35+
Civilization::Civilization(Civilization *pPlanet) : name(pPlanet->getName()), distance(pPlanet->getDistance()), size(pPlanet->getSize()){}
36+
37+
Civilization::Civilization() {}
38+
39+
Civilization::~Civilization() {
40+
41+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// Created by luis on 19/10/2020.
3+
//
4+
#include <string>
5+
6+
7+
#ifndef ED_TP2_PLANET_H
8+
#define ED_TP2_PLANET_H
9+
10+
11+
using namespace std;
12+
class Civilization {
13+
private:
14+
string name;
15+
int distance;
16+
int size;
17+
public:
18+
const string &getName() const;
19+
20+
void setName(const string &name);
21+
22+
int getDistance() const;
23+
24+
void setDistance(int distance);
25+
26+
int getSize() const;
27+
28+
void setSize(int size);
29+
30+
Civilization(string name, int distance, int size);
31+
32+
Civilization(Civilization *pPlanet);
33+
34+
virtual ~Civilization();
35+
36+
Civilization();
37+
};
38+
39+
#endif //ED_TP2_PLANET_H
49.8 KB
Binary file not shown.

0 commit comments

Comments
 (0)