Pages

Monday, June 16, 2025

Arrange the following words: sun, earth , mercury, mars in Alphabetical(lexicographical order) using Merge Sort in C++

 #include <iostream>

#include <vector>

using namespace std;



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

    int m = mid; // correct 

    int i = si; // correct

    vector<string> temp;// i wrote it <vector> which is wrong


    int n = ei; // n

    int j = mid+1;  // j     

    

    while(i<=m && j<=n) {

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

        temp.push_back(arr[i]);

        i++;

    } else {

        temp.push_back(arr[j]);  

        j++;

    }

}

    

    

    

    

    while(i <= m) {

        temp.push_back(arr[i]);

        i++;

    }

    

    while(j <= n) {

        temp.push_back(arr[j]);

        j++;

    }

    

    

    // mistake: i put this loop inside merge function

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

        arr[x] = temp[idx++];

    }

    

}   


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

    if(si >= ei) {

        return; 

    }

    

    int mid = si + (ei-si)/2; // mistakes i forgot the formula of mid

    

    

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

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

    

    

    merge(arr, si, mid, ei);

    

}


    

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

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

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

    }

    

    cout << endl;

}


int main() {

    string arr[4] = {"mars", "mercury", "sun", "earth"};

    

    mergeSort(arr, 0, 3);

    

    cout << "Arranged : ";

    printArray(arr, 4);

    

    


    return 0;

}


OUTPUT:


earth mars mercury suns

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