Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. public static void MergeSort_Recursive(int[] array, int left, int right)
  2. {
  3. if (left >= right) return;
  4.  
  5. var mid = (left + right)/2;
  6. MergeSort_Recursive(array, left, mid);
  7. MergeSort_Recursive(array, mid + 1, right);
  8. DoMerge(array, left, mid, right);
  9. }
  10.  
  11. private static void DoMerge(int[] array, int start, int mid, int end)
  12. {
  13. var temp = new int[end - start + 1];
  14. var leftIndex = start;
  15. var rightIndex = mid + 1;
  16. var arrayIndex = 0;
  17.  
  18. while (leftIndex <= mid && rightIndex <= end)
  19. {
  20. if (array[leftIndex] <= array[rightIndex])
  21. {
  22. temp[arrayIndex] = array[leftIndex];
  23. leftIndex++;
  24. }
  25. else
  26. {
  27. temp[arrayIndex] = array[rightIndex];
  28. rightIndex++;
  29. }
  30. arrayIndex++;
  31. }
  32.  
  33. while (leftIndex <= mid)
  34. {
  35. temp[arrayIndex] = array[leftIndex];
  36. leftIndex++;
  37. arrayIndex++;
  38. }
  39.  
  40. while (rightIndex <= end)
  41. {
  42. temp[arrayIndex] = array[rightIndex];
  43. rightIndex++;
  44. arrayIndex++;
  45. }
  46.  
  47. for (var i = 0; i < end - start + 1; i++)
  48. {
  49. array[start + i] = temp[i];
  50. }
  51.  
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement