0% found this document useful (0 votes)
15 views6 pages

Lab Assignment-2 (Daa)

Uploaded by

zaararawat08
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views6 pages

Lab Assignment-2 (Daa)

Uploaded by

zaararawat08
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

LAB-2 ASSIGNMENT

DAA-MERGE SORT ANALYSIS

ENIYA SRE AG

22BPS1002

Code for merge sort(best case)


#include <iostream>
#include <cstdlib>
#include <vector>
#include <ctime>
#include <algorithm>

using namespace std;

void merge(vector<float>& arr, int left, int mid, int right) {


int n1 = mid - left + 1;
int n2 = right - mid;

vector<float> L(n1), R(n2);

for (int i = 0; i < n1; i++)


L[i] = arr[left + i];
for (int i = 0; i < n2; i++)
R[i] = arr[mid + 1 + i];

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(vector<float>& 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);


}
}

void sorter(int n) {
vector<float> arr;

cout << "input: ";

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


float num = 100 + (rand() % 210);
arr.emplace_back(num);
}
sort(arr.begin(),arr.end()-1);

for (float i : arr) {


cout << i << " ";
}

cout << endl;

mergeSort(arr, 0, n - 1);

cout << "output: ";


for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}

int main() {
clock_t start = clock();

sorter(50000);

clock_t end = clock();


double elapsed = double(end - start) / CLOCKS_PER_SEC;

cout << endl;


cout << endl;
printf("Time measured: %.3f seconds.\n", elapsed);
return 0;
}

Code for merge sort(worst case)


#include <iostream>
#include <cstdlib>
#include <vector>
#include <ctime>
#include <algorithm>

using namespace std;

void merge(vector<float>& arr, int left, int mid, int right) {


int n1 = mid - left + 1;
int n2 = right - mid;

vector<float> L(n1), R(n2);

for (int i = 0; i < n1; i++)


L[i] = arr[left + i];
for (int i = 0; i < n2; i++)
R[i] = arr[mid + 1 + i];

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(vector<float>& 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);


}
}

void sorter(int n) {
vector<float> arr;

cout << "input: ";

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


float num = 100 + (rand() % 210);
arr.emplace_back(num);
}

for (float i : arr) {


cout << i << " ";
}

cout << endl;

mergeSort(arr, 0, n - 1);

cout << "output: ";


for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}

int main() {
clock_t start = clock();

sorter(50000);

clock_t end = clock();


double elapsed = double(end - start) / CLOCKS_PER_SEC;

cout << endl;


cout << endl;
printf("Time measured: %.3f seconds.\n", elapsed);

return 0;
}

You might also like