Advertisement
Guest User

Untitled

a guest
Oct 13th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int a[] = {9,3,1,4,5,7,7,2,2};
  6.  
  7. void merge(int a[], int left, int m, int right) {
  8. int n1 = m-left+1;
  9. int n2 = right-m;
  10. int L[n1];
  11. int R[n2];
  12.  
  13. for (int i=0; i< n1; i++)
  14. L[i] = a[left+i];
  15. for (int i=0; i< n2; i++)
  16. R[i] = a[m+i+1];
  17.  
  18. int i = 0;
  19. int j = 0;
  20. int k = left;
  21.  
  22. while(i < n1 && j < n2) {
  23. if (L[i] <= R[j]) {
  24. a[k] = L[i];
  25. i++;
  26. k++;
  27. } else {
  28. a[k] = R[j];
  29. j++;
  30. k++;
  31. }
  32. }
  33. while(i<n1) {
  34. a[k] = L[i];
  35. i++;
  36. k++;
  37. }
  38. while(j<n2) {
  39. a[k] = R[j];
  40. j++;
  41. k++;
  42. }
  43. }
  44.  
  45. void merge_sort(int a[], int left, int right) {
  46. if (left < right) {
  47. int m = (right+left)/2;
  48. merge_sort(a, left, m);
  49. merge_sort(a, m+1, right);
  50. merge(a, left, m, right);
  51. }
  52. }
  53.  
  54. int main() {
  55. int n = sizeof(a)/sizeof(a[0]);
  56. merge_sort(a, 0, n-1);
  57.  
  58. for (int i=0;i<n;i++) {
  59. cout << a[i] << " ";
  60. }
  61. cout << "\n";
  62. return 1;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement