Advertisement
SvetoslavUzunov

Merge sort

Apr 20th, 2021
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.82 KB | None | 0 0
  1. // Merge Sort.
  2.         static void Main()
  3.         {
  4.             var array = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
  5.             Console.WriteLine(string.Join(" ", Splits(array)));
  6.         }
  7.  
  8.         static int[] Splits(int[] array)
  9.         {
  10.             if (array.Length == 1) return array;
  11.  
  12.             int middle = array.Length / 2;
  13.             var leftPart = new int[middle];
  14.             var rightPart = new int[array.Length - middle];
  15.  
  16.             for (int i = 0; i < middle; i++)
  17.             {
  18.                 leftPart[i] = array[i];
  19.             }
  20.  
  21.             for (int i = 0; i < array.Length - middle; i++)
  22.             {
  23.                 rightPart[i] = array[(array.Length / 2) + i];
  24.             }
  25.  
  26.             leftPart = Splits(leftPart);
  27.             rightPart = Splits(rightPart);
  28.             return Merge(leftPart, rightPart);
  29.         }
  30.  
  31.         static int[] Merge(int[] leftPart, int[] rightPart)
  32.         {
  33.             var leftIncrease = 0;
  34.             var rightIncrease = 0;
  35.             var mergeArray = new int[leftPart.Length + rightPart.Length];
  36.  
  37.             for (int i = 0; i < mergeArray.Length; i++)
  38.             {
  39.                 if (rightIncrease == rightPart.Length || ((leftIncrease < leftPart.Length) && (leftPart[leftIncrease] <= rightPart[rightIncrease])))
  40.                 {
  41.                     mergeArray[i] = leftPart[leftIncrease];
  42.                     leftIncrease++;
  43.                 }
  44.                 else if (leftIncrease == leftPart.Length || ((rightIncrease < rightPart.Length) && (leftPart[leftIncrease] >= rightPart[rightIncrease])))
  45.                 {
  46.                     mergeArray[i] = rightPart[rightIncrease];
  47.                     rightIncrease++;
  48.                 }
  49.             }
  50.             return mergeArray;
  51.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement