Advertisement
sashomaga

Merge sort

Jan 7th, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.50 KB | None | 0 0
  1. using System;
  2. //Merge sort
  3. class Program
  4. {
  5.     static void Main()
  6.     {
  7.         int[] myArray = { 2, 9, 5, 1, 3, 4, 8, 7, 6 };
  8.         int[] result = MergeSort(myArray);
  9.         foreach (var item in result)
  10.         {
  11.             Console.Write(item + " ");
  12.         }
  13.  
  14.     }
  15.  
  16.     private static int[] MergeSort(int[] myArray)
  17.     {
  18.  
  19.         if (myArray.Length == 1)
  20.         {
  21.             return myArray;
  22.         }
  23.  
  24.         int mid = myArray.Length / 2;
  25.         int[] left = new int[mid];
  26.         int[] right = new int[myArray.Length - mid];
  27.  
  28.         for (int i = 0; i < mid; i++)
  29.         {
  30.             left[i] = myArray[i];
  31.         }
  32.         for (int i = 0; i < myArray.Length - mid; i++)
  33.         {
  34.             right[i] = myArray[i + mid];
  35.         }
  36.  
  37.         left = MergeSort(left);
  38.         right = MergeSort(right);
  39.  
  40.         int[] result = new int[myArray.Length];
  41.         int leftPoint = 0;
  42.         int rightPoint = 0;
  43.  
  44.         for (int i = 0; i < result.Length; i++)
  45.         {
  46.             if (rightPoint == right.Length || ((leftPoint < left.Length) && (left[leftPoint] <= right[rightPoint])))
  47.             {
  48.                 result[i] = left[leftPoint];
  49.                 leftPoint++;
  50.             }
  51.             else if (leftPoint == left.Length || ((rightPoint < right.Length) && (right[rightPoint] <= left[leftPoint])))
  52.             {
  53.                 result[i] = right[rightPoint];
  54.                 rightPoint++;
  55.             }
  56.         }
  57.         return result;
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement