Advertisement
countDecko

Untitled

Aug 1st, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. class Program
  8. {
  9.     private static int[] aux;
  10.  
  11.     static void Main(string[] args)
  12.     {
  13.         int[] arr = Console.ReadLine()
  14.             .Split()
  15.             .Select(int.Parse)
  16.             .ToArray();
  17.  
  18.         Sort(arr);
  19.  
  20.         Console.WriteLine(String.Join(" ", arr));
  21.     }
  22.  
  23.     public static void Sort(int[] arr)
  24.     {
  25.         aux = new int[arr.Length];
  26.         Sort(arr, 0, arr.Length - 1);
  27.     }
  28.  
  29.     private static void Merge(int[] arr, int lo, int mid, int hi)
  30.     {
  31.         if (IsLess(arr[mid], arr[mid + 1]))
  32.         {
  33.             return;
  34.         }
  35.  
  36.         for (int index = lo; index < hi + 1; index++)
  37.         {
  38.             aux[index] = arr[index];
  39.         }
  40.  
  41.         int i = lo;
  42.         int j = mid + 1;
  43.  
  44.         for (int k = lo; k <= hi; k++)
  45.         {
  46.             if (i > mid)
  47.             {
  48.                 arr[k] = aux[j++];
  49.             }
  50.             else if (j > hi)
  51.             {
  52.                 arr[k] = aux[i++];
  53.             }
  54.             else if (IsLess(aux[i], aux[j]))
  55.             {
  56.                 arr[k] = aux[i++];
  57.             }
  58.             else
  59.             {
  60.                 arr[k] = aux[j++];
  61.             }
  62.         }
  63.     }
  64.  
  65.     private static bool IsLess(int current, int other)
  66.     {
  67.         return current.CompareTo(other) < 0;
  68.     }
  69.  
  70.     private static void Sort(int[] arr, int lo, int hi)
  71.     {
  72.         if (lo >= hi)
  73.         {
  74.             return;
  75.         }
  76.  
  77.         int mid = lo + (hi - lo) / 2;
  78.  
  79.         Sort(arr, lo, mid);
  80.         Sort(arr, mid + 1, hi);
  81.         Merge(arr, lo, mid, hi);
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement