Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void MergeSort_Recursive(int[] array, int left, int right)
- {
- if (left >= right) return;
- var mid = (left + right)/2;
- MergeSort_Recursive(array, left, mid);
- MergeSort_Recursive(array, mid + 1, right);
- DoMerge(array, left, mid, right);
- }
- private static void DoMerge(int[] array, int start, int mid, int end)
- {
- var temp = new int[end - start + 1];
- var leftIndex = start;
- var rightIndex = mid + 1;
- var arrayIndex = 0;
- while (leftIndex <= mid && rightIndex <= end)
- {
- if (array[leftIndex] <= array[rightIndex])
- {
- temp[arrayIndex] = array[leftIndex];
- leftIndex++;
- }
- else
- {
- temp[arrayIndex] = array[rightIndex];
- rightIndex++;
- }
- arrayIndex++;
- }
- while (leftIndex <= mid)
- {
- temp[arrayIndex] = array[leftIndex];
- leftIndex++;
- arrayIndex++;
- }
- while (rightIndex <= end)
- {
- temp[arrayIndex] = array[rightIndex];
- rightIndex++;
- arrayIndex++;
- }
- for (var i = 0; i < end - start + 1; i++)
- {
- array[start + i] = temp[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement