fork download
  1. //Merge Sort
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. void merger(int arr[], int left, int mid, int right){
  6.  
  7. int n1 = mid-left+1; //Baam tukror size
  8. int n2 = right-mid; //Daan tukror size
  9.  
  10. int L[n1], R[n2]; //Temporary arrays
  11.  
  12. //Data input into L, R side values
  13. for (int i=0; i<n1; i++) L[i] = arr[left+i];
  14. for (int j=0; j<n2; j++) R[j] = arr[mid+1+j];
  15.  
  16. int i=0, j=0, k=left;
  17.  
  18. //Loop 1
  19. while (i<n1 && j<n2){
  20. if(L[i] <= R[j]){
  21. arr[k] = L[i]; i++;}
  22. else{
  23. arr[k] = R[j];
  24. j++;
  25. } k++;
  26. }
  27.  
  28. //Loop 2
  29. while (i<n1){
  30. arr[k] = L[i];
  31. i++; k++;
  32. }
  33.  
  34. //Loop 3
  35. while (j < n2){
  36. arr[k] = R[j];
  37. j++; k++;
  38. }
  39. }
  40.  
  41.  
  42. //Manager er kaaj
  43. void mergeSort(int arr[], int left, int right){
  44. if(left < right){
  45. int mid = left+(right-left)/2;
  46. mergeSort(arr, left, mid);
  47. mergeSort(arr, mid+1, right);
  48. merger(arr, left, mid, right);
  49. }
  50.  
  51. }
  52.  
  53. int main(){
  54.  
  55. int arr[] = {38, 27, 43, 3, 9, 82, 10};
  56. int n=7;
  57.  
  58. mergeSort(arr, 0, n-1);
  59.  
  60. cout << "Merge sorted array: ";
  61. for (int i=0; i<n; i++){cout << arr[i] << " ";}
  62. return 0;
  63. }
  64.  
  65.  
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Merge sorted array: 3 9 10 27 38 43 82