Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void MergeSort(vector <int> &v, size_t start, size_t end) {
  7. if (end - start < 2) {
  8. return;
  9. }
  10. if (end - start == 2) {
  11. if (v[start] > v[start + 1]) {
  12. swap(v[start], v[start + 1]);
  13. }
  14. return;
  15. }
  16. MergeSort(v, start, start + (end - start) / 2);
  17. MergeSort(v, start + (end - start) / 2, end);
  18. vector <int> w;
  19. size_t w1 = start;
  20. size_t e1 = start + (end - start) / 2;
  21. size_t w2 = e1;
  22. while (w.size() < end - start) {
  23. if (w1 >= e1 || (w2 < end && v[w2] <= v[w1])) {
  24. w.push_back(v[w2]);
  25. ++w2;
  26. }
  27. else {
  28. w.push_back(v[w1]);
  29. ++w1;
  30. }
  31. }
  32. for (size_t i = start; i < end; ++i) {
  33. v[i] = w[i - start];
  34.  
  35. }
  36. }
  37.  
  38.  
  39. int main() {
  40. vector <int> a;
  41. for (int i = 0; i < 100; ++i) {
  42. cin >> a[i];
  43. }
  44. MergeSort(a, 0, a.size());
  45.  
  46. for (int i = 0; i < 100; ++i) {
  47. cout << a[i];
  48. }
  49. system("pause");
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement