Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.46 KB | None | 0 0
  1.  
  2.         public static DataArray MergeSort(DataArray items, int start, int sz)
  3.         {
  4.             int goL = sz / 2 + sz % 2, goR = sz / 2;
  5.             opMcout += 2;
  6.             DataArray res = new MyDataArray(sz, 0);
  7.             if(sz <= 1)
  8.             {
  9.                 res.Set(0, items[start]);
  10.                 opMcout+=3;
  11.                 return res;
  12.             } else if(sz == 2)
  13.             {
  14.                 opMcout += 5;
  15.                 res.Set(0, Math.Min(items[start], items[start + 1]));
  16.                 res.Set(1, Math.Max(items[start], items[start + 1]));
  17.                 return res;
  18.             }
  19.             opMcout += 2;
  20.  
  21.             DataArray l = MergeSort(items, start, goL), r = MergeSort(items, start+goL, goR);
  22.  
  23.             int pt1 = 0, pt2 = 0;
  24.             for (int i = 0; i < sz; i++)
  25.                 if (pt1 >= goL)
  26.                 {
  27.                     res.Set(i, r[pt2++]);
  28.                     opMcout += 1;
  29.                 }
  30.                 else if (pt2 >= goR)
  31.                 {
  32.                     res.Set(i, l[pt1++]);
  33.                     opMcout += 2;
  34.                 }
  35.                 else if (l[pt1] < r[pt2])
  36.                 {
  37.                     res.Set(i, l[pt1++]);
  38.                     opMcout += 3;
  39.                 }
  40.                 else
  41.                 {
  42.                     res.Set(i, r[pt2++]);
  43.                     opMcout += 4;
  44.                 }
  45.             opMcout += 1;
  46.  
  47.             return res;
  48.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement