Advertisement
SReynoso

MERGE SORT

May 22nd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. #define SIZE 7
  6.  
  7. void mergesortarray(int *a, int begin, int mid, int mid2, int end)
  8. {
  9.  
  10.     int px = begin; // porque es donde inicia el primer arrglo
  11.     int py = mid2; // porque es donde inicia el 2do arreglo
  12.     int pt = begin; // porque el nuevo arreglo se llenara desde el inicio osea desde la pos 0;
  13.     int temp[SIZE];
  14.  
  15.     while (px <= mid && py <= end)
  16.     {
  17.         if (a[px] < a[py])
  18.             temp[pt++] = a[px++];
  19.         else
  20.             temp[pt++] = a[py++];
  21.     }
  22.  
  23.     if (px > mid) // el primer arreglo llego a su limite
  24.     {
  25.         while (py <= end)
  26.         {
  27.             temp[pt++] = a[py++];
  28.         }      
  29.     }
  30.     else // el segundo arreglo llego a su limite
  31.     {
  32.         while (px <= mid)
  33.         {
  34.             temp[pt++] = a[px++];
  35.         }
  36.     }  
  37.  
  38.     for (int i = begin; i <= end; i++)
  39.     {
  40.         a[i] = temp[i];
  41.     }
  42. }
  43.  
  44. void mergesort(int *a, int begin, int end)
  45. {
  46.     if (begin < end)
  47.     {
  48.         int mid = (begin + end) / 2;
  49.         mergesort(a, begin, mid);
  50.         mergesort(a, mid + 1, end);
  51.         mergesortarray(a, begin, mid, mid + 1, end);
  52.     }
  53. }
  54.  
  55.  
  56.  
  57.  
  58. int main()
  59. {
  60.     int a[SIZE] = { 5,4,3,1,2,6,7};
  61.  
  62.     for (int i = 0; i < SIZE; i++)
  63.     {
  64.         cout << a[i] << " ";
  65.     }
  66.     cout << endl;
  67.  
  68.     cout << "----------------------" << endl << endl;
  69.    
  70.     mergesort(a, 0, SIZE-1);
  71.    
  72.     for (int i = 0; i < SIZE; i++)
  73.     {
  74.         cout << a[i] << " ";
  75.     }
  76.  
  77.     cout << endl;
  78.     cout << "----------------------" << endl << endl;
  79.     system("pause");
  80.  
  81.  
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement