Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. void merge_sort(int* arr, int left_b, int right_b) {
  2. int temp;
  3. if (left_b < right_b)
  4. if (right_b - left_b == 1) {
  5. if (arr[left_b] > arr[right_b]) {
  6. temp = arr[right_b];
  7. arr[right_b] = arr[left_b];
  8. arr[left_b] = temp;
  9. }
  10.  
  11. }
  12. else {
  13. merge_sort(arr, left_b, left_b + (right_b - left_b) / 2);
  14. merge_sort(arr, left_b + (right_b - left_b) / 2 + 1, right_b);
  15. int* dop = new int[right_b];
  16. int left_start = left_b;
  17. int mid = left_b + (right_b - left_b) / 2;
  18. int right_start = mid + 1;
  19. int sok = 0;
  20. while (left_start <= mid && right_start <= right_b) {
  21. if (arr[left_start] < arr[right_start]) {
  22. dop[sok] = arr[left_start];
  23. ++left_start;
  24. }
  25. else {
  26. dop[sok] = arr[right_start];
  27. ++right_start;
  28. }
  29. ++sok;
  30. }
  31. while (left_start <= mid) {
  32. dop[sok] = arr[left_start];
  33. ++left_start;
  34. ++sok;
  35. }
  36. while (right_start <= right_b) {
  37. dop[sok] = arr[right_start];
  38. ++right_start;
  39. ++sok;
  40. }
  41. for (int k = 0; k < sok; ++k) {
  42. arr[left_b + k] = dop[k];
  43. }
  44. }
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement