Untitled

 avatar
unknown
plain_text
a year ago
3.5 kB
14
Indexable
#include <iostream>
using namespace std;
 
class QuickSort {
public:
    // Partition function using Lomuto partition scheme
    int partition(int arr[], int low, int high) {
        int pivot = arr[high]; // pivot element
        int i = low - 1;       // index of smaller element
 
        for (int j = low; j < high; j++) {
            if (arr[j] <= pivot) {
                i++;
                swap(arr[i], arr[j]);
            }
        }
        swap(arr[i + 1], arr[high]);
        return i + 1;
    }
 
    // QuickSort recursive function
    void quickSort(int arr[], int low, int high) {
        if (low < high) {
            int pi = partition(arr, low, high);
 
            // Recursively sort elements before and after partition
            quickSort(arr, low, pi - 1);
            quickSort(arr, pi + 1, high);
        }
    }
};
 
 
int main() {
    int n;
    cout << "Enter number of elements: ";
    cin >> n;
 
    int arr[n];
    cout << "Enter array elements:\n";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
 
    QuickSort sorter;
    sorter.quickSort(arr, 0, n - 1);
 
    cout << "After sorting:\n";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
 
    return 0;
}




2}



#include <iostream>
 
using namespace std;
 
class Insertion{
public:
void insertion(int arr[] ,int n){
    int key;
 for(int j=1;j<n; j++){
    key = arr[j];
   int i=j-1;
   while( i>=0 && arr[i] > key){
      arr[i+1] = arr[i];
      i=i-1;
   }
   arr[i+1] = key;
 }
}
};
 
int main(){
 
    int n;
    cout<< "Enter array size";
    cin>> n;
    int arr[n];
    for(int i=0;i<n;i++){
        cin >> arr[i];
    }
    Insertion key;
    key.insertion( arr , n);
 
    cout<< "After sorting ";
for(int i=0;i<n;i++){
        cout << arr[i] << " ";
    }
 
}



3 rd


#include <iostream>
using namespace std;
 
class MMerge {
public:
    void merge(int arr[], int left, int mid, int right) {
        int n1 = mid - left + 1;
        int n2 = right - mid;
 
        int L[n1], R[n2];
 
        for (int i = 0; i < n1; i++)
            L[i] = arr[left + i];
        for (int j = 0; j < n2; j++)
            R[j] = arr[mid + 1 + j];
 
        int i = 0, j = 0, k = left;
 
        while (i < n1 && j < n2) {
            if (L[i] <= R[j]) {
                arr[k] = L[i];
                i++;
            } else {
                arr[k] = R[j];
                j++;
            }
            k++;
        }
 
        while (i < n1) {
            arr[k] = L[i];
            i++;
            k++;
        }
 
        while (j < n2) {
            arr[k] = R[j];
            j++;
            k++;
        }
    }
 
    void mergeSort(int arr[], int left, int right) {
        if (left < right) {
            int mid = left + (right - left) / 2;
            mergeSort(arr, left, mid);
            mergeSort(arr, mid + 1, right);
            merge(arr, left, mid, right);
        }
    }
};
 
int main() {
    int n;
    cout << "Enter array size: ";
    cin >> n;
 
    int arr[n];
    cout << "Enter array elements:\n";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
   MMerge sorter;
   sorter.mergeSort(arr, 0, n - 1);
 
    cout << "After sorting:\n";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
 
    return 0;
}
Editor is loading...
Leave a Comment