Skip to content

Commit

Permalink
Merge pull request #279 from WildTiger404/MergeSort
Browse files Browse the repository at this point in the history
Add recursive Merge Sort
  • Loading branch information
ambujraj authored Oct 3, 2018
2 parents e86237b + c22c481 commit cbad8ca
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions recursion/MergeSort.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
namespace Merge_Sort
{
public class MergeSort
{
public static void SortBy(int[] array, int leftBorder, int rightBorder)
{
if (leftBorder >= rightBorder)
return;
int middle = (leftBorder + rightBorder) / 2;
SortBy(array, leftBorder, middle);
SortBy(array, middle+1, rightBorder);

int[] buf = new int[rightBorder-leftBorder+1];

int i = leftBorder; //index of left array
int j = middle + 1; //index of right array
int k = 0; //index of final array
while (i <= middle && j <= rightBorder)
{
if (array[i] < array[j])
buf[k++] = array[i++];
else
buf[k++] = array[j++];
}
//Add the tail of right array
while (j <= rightBorder)
buf[k++] = array[j++];
//Add the tail of left array
while (i <= middle)
buf[k++] = array[i++];

for (k = 0; k < rightBorder - leftBorder + 1; k++)
array[leftBorder + k] = buf[k];
}
}
}

0 comments on commit cbad8ca

Please sign in to comment.