Advertisement
Eternoseeker

Merge sort DSA

Dec 27th, 2022
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | Source Code | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class merg{
  5.     int arr[10] = {1, 44, 32, 12, 43, 89, 41, 78, 11, 10};
  6. public:
  7.     void merge(int l, int m, int r) {
  8.        int i, j, k, nl, nr;
  9.        nl = m-l+1; nr = r-m;
  10.        int leftarr[nl], rightarr[nr];
  11.  
  12.        for(i = 0; i<nl; i++)
  13.           leftarr[i] = arr[l+i];
  14.        for(j = 0; j<nr; j++)
  15.           rightarr[j] = arr[m+1+j];
  16.  
  17.        i = 0; j = 0; k = l;
  18.        while(i < nl && j<nr) {
  19.           if(leftarr[i] <= rightarr[j]) {
  20.              arr[k] = leftarr[i];
  21.              i++;
  22.           }else{
  23.              arr[k] = rightarr[j];
  24.              j++;
  25.           }
  26.           k++;
  27.        }
  28.  
  29.        while(i<nl) {
  30.           arr[k] = leftarr[i];
  31.           i++; k++;
  32.        }
  33.        while(j<nr) {
  34.           arr[k] = rightarr[j];
  35.           j++; k++;
  36.        }
  37.     }
  38.  
  39.     void mergesort(int start, int end){
  40.         if(start < end){
  41.             int middle = (start + end)/2;
  42.             mergesort(start, middle);
  43.             mergesort(middle + 1, end);
  44.             merge(start, middle, end);
  45.         }
  46.         else{
  47.             return;
  48.         }
  49.     }
  50.  
  51.     void display(){
  52.         cout << "Sorted:";
  53.         for(int i = 0; i < 10; i++){
  54.             cout << " " << arr[i];
  55.         }
  56.     }
  57. };
  58.  
  59. int main(){
  60.     merg n;
  61.     n.mergesort(0, 9);
  62.     n.display();
  63.     return 0;
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement