Pages

Thursday, May 29, 2025

Merge Sort in C++ (university dsa topic)

 #include <iostream>

#include <vector>
using namespace std;

void merge(vector<int> &arr, int st, int mid , int end){  // O(n)
    vector<int> temp;
    int i = st, j = mid+1;


    // left to right half traversal
    while(i <= mid && j <= end) {
        if(arr[i] <= arr[j]) {
            temp.push_back(arr[i]);
            i++;a
        } else {
            temp.push_back(arr[j]);
            j++;
        }
    }


    while(i <= mid) {
        temp.push_back(arr[i]);
        i++;
    }


    while(j <= end) {
        temp.push_back(arr[j]);
        j++;
    }


   
    for(int idx=0; idx<temp.size(); idx++) {
        arr[idx+st] = temp[idx];
    }
}


void mergeSort(vector<int> &arr, int st, int end) {
    if(st < end) {
        int mid = st + (end-st)/2;

        mergeSort(arr, st,mid); // left half
        mergeSort(arr, mid+1, mid); // right half

        merge(arr, st, mid ,end);
    }
}

int main() {
    vector<int> arr = {12, 31, 35, 8, 32, 17};

    mergeSort(arr, 0, arr.size()-1); // arr.size()-1 => array ka last index)

    for(int val : arr) {
        cout << val << " ";
    }

    cout << endl;

    return 0;
}

No comments:

Post a Comment

Stack using Linked List – Partial (University Exam Topic)

 #include <iostream> using namespace std; struct Node {     int data;     Node* next; }; class Stack {     Node* top; public:     Stac...