Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. void merge(int *originalArray, int *mergeArray, int start, int middle, int end) {
  2. int left = start;
  3. int right = middle + 1;
  4. for (int i = start; i <= end; i++) {
  5. if (left <= middle && (right > end || originalArray[left] <= originalArray[right])) {
  6. mergeArray[i] = originalArray[left];
  7. left++;
  8. }
  9. else {
  10. mergeArray[i] = originalArray[right];
  11. right++;
  12. }
  13. }
  14. for (int i = 0; i <= end; i++) {
  15. originalArray[i] = mergeArray[i];
  16. }
  17. }
  18. void _mergeSort(int *originalArray, int *mergeArray, int start, int end) {
  19. if (start < end) {
  20. int middle = (start + end) / 2;
  21. _mergeSort(originalArray, mergeArray, start, middle);
  22. _mergeSort(originalArray, mergeArray, middle + 1, end);
  23. merge(originalArray, mergeArray, start, middle, end);
  24. }
  25. }
  26. void mergeSort(int *arr, int length) {
  27. int *mergeSort = new int[length];
  28. _mergeSort(arr, mergeSort, 0, length - 1);
  29. delete[] mergeSort;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement