Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Sorting
- {
- class Program
- {
- static int n;
- static int[] a;
- static int[] help;
- static void Merge(int l, int middle, int r)
- {
- for(int i = l; i <= r; i++)
- {
- help[i] = a[i];
- }
- int left = l;
- int right = middle + 1;
- int k = l;
- while(left <= middle && right <= r)
- {
- if (help[left] < help[right])
- {
- a[k++] = help[left];
- left++;
- }
- else
- {
- a[k++] = help[right];
- right++;
- }
- }
- while(left <= middle)
- {
- a[k++] = help[left];
- left++;
- }
- while(right <= r)
- {
- a[k++] = help[right];
- right++;
- }
- }
- static void Merge_Sort(int l, int r)
- {
- if (l >= r) return;
- int middle = (l + r) / 2;
- Merge_Sort(l, middle);
- Merge_Sort(middle + 1, r);
- Merge(l, middle, r);
- }
- static void Main(string[] args)
- {
- n = int.Parse(Console.ReadLine());
- a = new int[n];
- help = new int[n];
- for(int i = 0; i < n; i++)
- {
- a[i] = int.Parse(Console.ReadLine());
- }
- Merge_Sort(0, n - 1);
- Console.WriteLine();
- for(int i = 0; i < n; i++)
- {
- Console.Write(a[i] + " ");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement