Guest User

Untitled

a guest
Jan 16th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. void mergeSort(int *arr, int *out, int start, int end) {
  2. if (end == start + 1) {
  3. out[0] = arr[start];
  4. return;
  5. }
  6. int mid = (start + end) / 2;
  7. int left_length = mid - start;
  8. int right_length = end - mid;
  9. int *left = new int[left_length];
  10. int *right = new int[right_length];
  11. mergeSort(arr, left, start, mid);
  12. mergeSort(arr, right, mid, end);
  13. // merge
  14. int i = 0;
  15. int j = 0;
  16. int k = 0;
  17. while (i < left_length && j < right_length) {
  18. if (left[i] <= right[j]) {
  19. out[k] = left[i];
  20. ++i;
  21. } else {
  22. out[k] = right[j];
  23. ++j;
  24. }
  25. ++k;
  26. }
  27.  
  28. while (i < left_length) {
  29. out[k] = left[i];
  30. ++i;
  31. ++k;
  32. }
  33. while (j < right_length) {
  34. out[k] = right[j];
  35. ++j;
  36. ++k;
  37. }
  38. delete[] left;
  39. delete[] right;
  40. }
Add Comment
Please, Sign In to add comment