Skip to content

Instantly share code, notes, and snippets.

@kmb385
Last active January 13, 2022 07:41
Show Gist options
  • Save kmb385/40f31440568c4a19e7ebdd8a21d27130 to your computer and use it in GitHub Desktop.
Save kmb385/40f31440568c4a19e7ebdd8a21d27130 to your computer and use it in GitHub Desktop.
C# Merge Sort
int[] nums = { 2323, 23, 200, 323, 20, 15 };
MergeSort(nums);
Console.WriteLine(String.Join(",", nums));
void MergeSort(int[] nums)
{
if(nums.Length < 2)
{
return;
}
int midPoint = nums.Length / 2;
int[] left = nums.Take(midPoint).ToArray();
int[] right = nums.Skip(midPoint).ToArray();
MergeSort(left);
MergeSort(right);
Merge(nums, left, right);
}
void Merge(int[] nums, int[] left, int[] right)
{
int n = 0, l = 0, r = 0;
while (l < left.Length && r < right.Length)
{
if (left[l] < right[r])
{
nums[n++] = left[l++];
} else
{
nums[n++] = right[r++];
}
}
while(l < left.Length)
{
nums[n++] = left[l++];
}
while(r < right.Length)
{
nums[n++] = right[r++];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment