merge sort and quick sort

PHOTO EMBED

Tue Feb 01 2022 14:17:08 GMT+0000 (Coordinated Universal Time)

Saved by @harsh_it_8118

#include <bits/stdc++.h>
using namespace std;
#define M 8
#define N 6
// void merge(int*, int , int, int);
// void mergesort(int arr[], int low, int high){
//     if(low>=high)
//     return;
//     int mid = (low+high)/2;
//     mergesort(arr, low, mid);
//     mergesort(arr, mid+1, high);
//     merge(arr, low, mid, high);
// }

// void merge(int arr[], int low, int mid, int high){
//     int n1 = mid-low+1, n2 = high-mid;
//     int left[n1], right[n2];
//     for(int i = 0; i<n1; i++)
//     left[i] = arr[low+i];
//     for(int j = 0; j<n2; j++)
//     right[j] = arr[mid+1+j];
//     int i = 0, j = 0, k = low;
//     while(i<n1 && j<n2){
//         if(left[i] > right[j]){
//             arr[k++] = right[j++];
//         }
//         else
//         arr[k++] = left[i++];
//     }
//     while(i < n1)
//     arr[k++] = left[i++];
//     while(j<n2)
//     arr[k++] = right[j++];
// }
// void intersection(int a[], int b[]){
//     int j=0, i=0;
//     vector<int> v;
//     while(i<M && j<N){
//         if(a[i]==a[i-1] && i!=0){
//             i++;
//             continue;
//         }
        
//         if(a[i]<b[j]){
//             i++;continue;
//         }
//         if(a[i]>b[j]){j++;
//             continue;
//         }
        
//         if(a[i]==b[j]){
//             v.push_back(a[i]);
//             i++;j++;
//         }
//     }
//     for(auto x: v)
//     cout<<x<<" ";
// }
// void unions(int a[], int b[]){
//     int i= 0, j = 0;
//     vector<int> v;
//     while(i<M && j<N){
//         if(i!=0 && a[i]==a[i-1]){
//             i++;continue;
//         }
//         if(b[j]==b[j-1] && j!=0){
//             j++;continue;
//         }
//         if(a[i]<b[j]){
//             v.push_back(a[i]);
//             i++;
//         }
//         else if(a[i]>b[j]){
//             v.push_back(b[i]);
//             j++;
//         }
//         else{
//             v.push_back(a[i]);
//             i++; j++;
//         }
//     }
//     while(i<M){
//         v.push_back(a[i]);
//         i++;
//     }
//      while(j<N){
//         v.push_back(b[j]);
//         j++;
//     }
//     for(auto x: v)
//     cout<<x<<" ";
// }
void print(int arr[]){
    for(int i = 0; i< M; i++)
    cout<<arr[i]<<" ";
}
void swap(int *a, int *b){
    int temp = *a;
    *a = *b;
    *b = temp;
}
int hoarspartition(int arr[],int l, int h){
    // swap(&arr[index], &arr[0]);
    int pivot = arr[l];
    int i=l-1, j=h+1;
    while(true){
        do{
            i++;
        }while(arr[i]<pivot);
        do{
            j--;
        }while(arr[j]>pivot);
        if(i>=j)
        return j;
        swap(&arr[i], &arr[j]);
    }
}
void quicksort(int arr[], int l, int h){
    if(l<h){
        int p = hoarspartition(arr, l, h);
        quicksort(arr, l, p);
        quicksort(arr, p+1, h);
    }
}
// void lumotopartion(int arr[], int index){
//     swap(&arr[index], &arr[M-1]);
//     int pivot = arr[M-1];
//     int i = -1;
//     for(int j= 0; j<M; j++){
//         if(arr[j]<pivot){
//             i++;
//             swap(&arr[i], &arr[j]);
//         }
//     }
//     swap(&arr[i+1], &arr[M-1]);
// }
int main(){
    int arr[M];
    for(int i = 0; i< M; i++){
        cin>>arr[i];
    }
  //  int index;
    //cin>>index;
  //  lumotopartion(arr, index);
  //  hoarspartition(arr, index)<<endl;
  //  mergesort(arr, 0, N-1);
  quicksort(arr, 0, M-1);
     print(arr);
   // unions(arr, b);
}
content_copyCOPY

partioning and merging intersection of two arrays union of two arrays