Advertisement
aimon1337

Untitled

Feb 1st, 2022
1,596
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. void merge(vector<int> &v, int s, int m, int e)
  2. {
  3.     vector<int> temp;
  4.  
  5.     int i, j;
  6.     i = s;
  7.     j = m + 1;
  8.  
  9.     while (i <= m && j <= e)
  10.     {
  11.  
  12.         if (v[i] <= v[j])
  13.         {
  14.             temp.push_back(v[i]);
  15.             ++i;
  16.         }
  17.         else
  18.         {
  19.             temp.push_back(v[j]);
  20.             ++j;
  21.         }
  22.     }
  23.  
  24.     while (i <= m)
  25.     {
  26.         temp.push_back(v[i]);
  27.         ++i;
  28.     }
  29.  
  30.     while (j <= e)
  31.     {
  32.         temp.push_back(v[j]);
  33.         ++j;
  34.     }
  35.  
  36.     for (i = s; i <= e; ++i)
  37.         v[i] = temp[i - s];
  38. }
  39.  
  40. void mergeSort(vector<int> &A, int li, int ls)
  41. {
  42.     if (li < ls)
  43.     {
  44.         int mid = li + (ls - li) / 2;
  45.         mergeSort(A, li, mid);
  46.         mergeSort(A, mid + 1, ls);
  47.         merge(A, li, mid, ls);
  48.     }
  49. }
  50.  
  51. void quickSort(vector<int> &A, int s, int e)
  52. {
  53.     int i, j, mid, piv;
  54.     i = s;
  55.     j = e;
  56.     mid = s + (e - s) / 2;
  57.     piv = A[mid];
  58.  
  59.     while (i < e || j > s)
  60.     {
  61.         while (A[i] < piv)
  62.             i++;
  63.         while (A[j] > piv)
  64.             j--;
  65.  
  66.         if (i <= j)
  67.         {
  68.             swap(A[i], A[j]);
  69.             i++;
  70.             j--;
  71.         }
  72.         else
  73.         {
  74.             if (i < e)
  75.                 quickSort(A, i, e);
  76.             if (j > s)
  77.                 quickSort(A, s, j);
  78.             return;
  79.         }
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement