InasAwad

Untitled

Jun 23rd, 2021
748
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. double getMedian(int ar1[], int ar2[], int n, int m)
  2. {
  3.     int i = 0; /* Current index of input array ar1[] */
  4.     int j = 0; /* Current index of input array ar2[] */
  5.     int count;
  6.     double m1 = -1, m2 = -1;
  7.  
  8.     // Since there are (n+m) elements,
  9.     // There are following two cases
  10.     // if n+m is odd then the middle
  11.     //index is median i.e. (m+n)/2
  12.     if ((m + n) % 2 == 1)
  13.     {
  14.         for (count = 0; count <= (n + m) / 2; count++)
  15.         {
  16.             if (i != n && j != m)
  17.             {
  18.                 cout << "i " << i << endl << "j " << j << endl;
  19.                 m1 = (ar1[i] > ar2[j]) ? ar2[j++] : ar1[i++];
  20.             }
  21.             else if (i < n)
  22.             {
  23.                 m1 = ar1[i++];
  24.             }
  25.             // for case when j<m,
  26.             else
  27.             {
  28.                 m1 = ar2[j++];
  29.             }
  30.         }
  31.         return m1;
  32.     }
  33.  
  34.     // median will be average of elements
  35.     // at index ((m+n)/2 - 1) and (m+n)/2
  36.     // in the array obtained after merging ar1 and ar2
  37.     else
  38.     {
  39.         for (count = 0; count <= (n + m) / 2; count++)
  40.         {
  41.         /m2 = m1;
  42.             if (i != n && j != m)
  43.             {
  44.                 m1 = (ar1[i] > ar2[j]) ? ar2[j++] : ar1[i++];
  45.             }
  46.             else if (i < n)
  47.             {
  48.                 m1 = ar1[i++];
  49.             }
  50.             // for case when j<m,
  51.             else
  52.             {
  53.                 m1 = ar2[j++];
  54.             }
  55.         }
  56.         return (m1 + m2) / 2;
  57.     }
  58. }
  59.  
RAW Paste Data