In C Write a vector merge sort which is place lug other word
In C++
Write a vector merge sort which is place. lug other words pass parameters so that only one vector is used for the sort.Solution
Answer:
#include <iostream>
#include <vector>
using namespace std;
void display(vector<int> v)
 {
 for(int i = 0; i < v.size(); i++) cout << v[i] << \" \";
 cout << endl;
 }
vector<int> merge(vector<int> left_side, vector<int> right_side)
 {
 vector<int> output;
 while ((int)left_side.size() > 0 || (int)right_side.size() > 0) {
 if ((int)left_side.size() > 0 && (int)right_side.size() > 0) {
 if ((int)left_side.front() <= (int)right_side.front()) {
 output.push_back((int)left_side.front());
 left_side.erase(left_side.begin());
 }
 else {
 output.push_back((int)right_side.front());
 right_side.erase(right_side.begin());
 }
 } else if ((int)left_side.size() > 0) {
 for (int i = 0; i < (int)left_side.size(); i++)
 output.push_back(left_side[i]);
 break;
 } else if ((int)right_side.size() > 0) {
 for (int i = 0; i < (int)right_side.size(); i++)
 output.push_back(right_side[i]);
 break;
 }
 }
 return output;
 }
vector<int> mergeSort(vector<int> m)
 {
 if (m.size() <= 1)
 return m;
 
 vector<int> left_side, right_side, output;
 int center = ((int)m.size()+ 1) / 2;
 
 for (int i = 0; i < center; i++) {
 left_side.push_back(m[i]);
 }
for (int i = center; i < (int)m.size(); i++) {
 right_side.push_back(m[i]);
 }
 
 left_side = mergeSort(left_side);
 right_side = mergeSort(right_side);
 output = merge(left_side, right_side);
 
 return output;
 }
int main()
 {
 vector<int> v;
v.push_back(38);
 v.push_back(27);
 v.push_back(43);
display(v);
 cout << \"------------------\" << endl;
v = mergeSort(v);
display(v);
 }


