Pages

Monday, July 14, 2025

Merge Sort - Revision For University Exam

#include <iostream>

#include <vector>

using namespace std;


void printArray(int arr[], int n) {

    for(int i=0;    i<n; i++) {

        cout << arr[i] << " ";

    }

    cout << endl;

}


void merge(int arr[], int si, int mid, int ei) {

    vector<int> temp;

    int i = si;

    int j = mid+1;

    

    

    while(i <= mid && j <= ei) {

        if(arr[i] < arr[j]) {

            temp.push_back(arr[i++]);

        } else {

            temp.push_back(arr[j++]);

        }

    }

    

    // copy remeining code

    while(i <= mid) {

        temp.push_back(arr[i++]);

        

    }

    

    while(j <= ei) {

        temp.push_back(arr[j++]);

    }

    

    // copy code back to the array

    for(int idx=si, x=0; idx <=ei; idx++) {

        arr[idx] = temp[x++];        // my major mistake

    }

    

}


void mergeSort(int arr[], int si, int ei) {

    if(si >= ei) {

        return;

    }

    int mid = si+(ei-si)/2;

    

    mergeSort(arr, si, mid); // left part

    mergeSort(arr, mid+1, ei); // right part

    merge(arr, si, mid, ei);

}




int main() {

    int arr[] = {1,4, 5, 3, 2};

    int n = sizeof(arr)/sizeof(int);

    

    cout << "Original Array: \n";

    printArray(arr, n);

    

    mergeSort(arr, 0, n-1);

    cout << "Merged Sort: \n";

    printArray(arr, n);


    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...