Advertisement
stanevplamen

03.02.0e.MergeSort

Jul 26th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.70 KB | None | 0 0
  1. using System;
  2.  
  3. public static class MergeMinusSort
  4. {
  5.     static int numbersCount;
  6.     public static int[] tempArray;
  7.  
  8.     public static void Merge(int[] numbers, int left, int mid, int right)
  9.     {
  10.       int i;
  11.       int leftEnd;
  12.       int numElements;
  13.       int tempPosition;
  14.  
  15.       leftEnd = (mid - 1);
  16.       tempPosition = left;
  17.       numElements = (right - left + 1);
  18.  
  19.       while ((left <= leftEnd) && (mid <= right))
  20.       {
  21.         if (numbers[left] <= numbers[mid])
  22.         {
  23.           tempArray[tempPosition] = numbers[left];
  24.           tempPosition += 1;
  25.           left += 1;
  26.         }
  27.         else
  28.         {
  29.           tempArray[tempPosition] = numbers[mid];
  30.           tempPosition += 1;
  31.           mid += 1;
  32.         }
  33.       }
  34.  
  35.       while (left <= leftEnd)
  36.       {
  37.         tempArray[tempPosition] = numbers[left];
  38.         left += 1;
  39.         tempPosition += 1;
  40.       }
  41.       while (mid <= right)
  42.       {
  43.         tempArray[tempPosition] = numbers[mid];
  44.         mid += 1;
  45.         tempPosition += 1;
  46.       }
  47.  
  48.       for (i = 0; i < numElements; i++)
  49.       {
  50.         numbers[right] = tempArray[right];
  51.         right -= 1;
  52.       }
  53.     }
  54.  
  55.     public static void M_sort(int[] numbers, int left, int right)
  56.     {
  57.         if (right > left)
  58.         {
  59.             int mid = (right + left) / 2;
  60.             M_sort(numbers, left, mid);
  61.             M_sort(numbers, (mid + 1), right);
  62.             Merge(numbers, left, (mid + 1), right);
  63.         }
  64.     }
  65.  
  66.     public static void MergeSort(int[] numbers, int arraySize)
  67.     {
  68.       M_sort(numbers, 0, arraySize - 1);
  69.     }
  70.  
  71.     static void Main()
  72.     {
  73.         int[] arrayOne = {1, 3, 5, 2, 4, 8, 10, 6, 16, 14, 12 , -1, 0};
  74.         numbersCount = arrayOne.Length;
  75.         tempArray = new int[numbersCount];
  76.  
  77.         MergeSort(arrayOne, numbersCount);
  78.  
  79.         for (int i = 0; i < numbersCount; i++)
  80.         {
  81.                 Console.Write(arrayOne[i]);
  82.                 Console.Write(" ");
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement