Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- void MergeSort(vector <int> &v, size_t start, size_t end) {
- if (end - start < 2) {
- return;
- }
- if (end - start == 2) {
- if (v[start] > v[start + 1]) {
- swap(v[start], v[start + 1]);
- }
- return;
- }
- MergeSort(v, start, start + (end - start) / 2);
- MergeSort(v, start + (end - start) / 2, end);
- vector <int> w;
- size_t w1 = start;
- size_t e1 = start + (end - start) / 2;
- size_t w2 = e1;
- while (w.size() < end - start) {
- if (w1 >= e1 || (w2 < end && v[w2] <= v[w1])) {
- w.push_back(v[w2]);
- ++w2;
- }
- else {
- w.push_back(v[w1]);
- ++w1;
- }
- }
- for (size_t i = start; i < end; ++i) {
- v[i] = w[i - start];
- }
- }
- int main() {
- vector <int> a;
- for (int i = 0; i < 100; ++i) {
- cin >> a[i];
- }
- MergeSort(a, 0, a.size());
- for (int i = 0; i < 100; ++i) {
- cout << a[i];
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement