Professional Documents
Culture Documents
DSA Lab 11 Solved
DSA Lab 11 Solved
DSA Lab 11 Solved
Question No 1:
Merge-Sort Implementation using Array
Code-1:
#include <iostream>
using namespace std;
void merge(int arr[], int start, int end, int mid)
{
int i, j, k;
int new_arr[50];
i = start;
k = start;
j = mid + 1;
while (i <= mid && j <= end)
{
if (arr[i] < arr[j])
{
new_arr[k] = arr[i];
k++;
i++;
}
else
{
new_arr[k] = arr[j];
k++;
j++;
}
}
while (i <= mid)
{
new_arr[k] = arr[i];
k++;
i++;
}
while (j <= end)
{
new_arr[k] = arr[j];
k++;
j++;
}
for (i = start; i < k; i++)
{
arr[i] = new_arr[i];
}
}
void merge_sort(int arr[], int start, int end)
{
int mid;
if (start < end)
{
mid = (start + end) / 2;
merge_sort(arr, start, mid);
merge_sort(arr, mid + 1, end);
merge(arr, start,end,mid);
}
}
int main()
{
int arr[30],num;
cout << "How many number you entered ?"<<endl;
cin >> num;
cout << "\t\tEnter Array interger;" << endl;
for (int i = 0; i < num; i++)
{
cin >> arr[i];
}
merge_sort(arr, 0, num - 1);
cout << "Sorted array\n";
for (int i = 0; i < num; i++)
{
cout << arr[i] << "\t";
}
system("pause");
return 0;
}
Code -2:
#include <iostream>
using namespace std;
void merge(int arr[], int start, int end, int mid)
{
int i, j, k;
i = start;
k = start;
j = mid + 1;
int *new_arr = new int[];
while (i <= mid && j <= end)
{
if (arr[i] < arr[j])
{
new_arr[k] = arr[i];
i++;
k++;
}
else
{
new_arr[k] = arr[j];
j++;
k++;
}
}
while (i <= mid)
{
new_arr[k] = arr[i];
k++;
i++;
}
while (j <= end)
{
new_arr[k] = arr[j];
k++;
j++;
Question No 2:
Quick-Sort Implementation using Array
Code:
#include<iostream>
using namespace std;
int partition(int arr[], int lower_b, int upper_b)
{
int start, end, pivot;
int swap;
pivot = arr[lower_b];
start = lower_b;
end = upper_b;
while (start<end)
{
while (arr[start] <= pivot)
{
start++;
}
while (arr[end] > pivot)
{
end--;
}
if (start < end)
{
swap = arr[start];
arr[start] = arr[end];
arr[end] = swap;
}
}
swap = arr[lower_b];
arr[lower_b] = arr[end];
arr[end] = swap;
return end;
}
void quick_sort(int arr[], int start, int end)
{
int location;
if (start < end)
{
location = partition(arr, start, end);
quick_sort(arr, start, location - 1);
quick_sort(arr,location+1,end);
}
}
int main()
{
int arr[5];
int num;
cout << "How many integers you entered" << endl;
cin >> num;
cout << "\t\tIntergers" << endl;
for (int i = 0; i < num; i++)
{
cin >> arr[i];
}
quick_sort(arr, 0, num - 1);
for (int i = 0; i < num; i++)
{
cout << arr[i] << "\t";
}
system("pause");
return 0;
}
Question No 3:
Merge-Sort Implementation using Linked List
Code:
#include<iostream>
using namespace std;
class list
{
private:
int data;
list *next;
list *head = NULL, *tail = NULL;
public:
void create_list(int val)
{
list *newnode = new list;
newnode->data = val;
newnode->next = NULL;
if (head == NULL)
{
head = newnode;
tail = newnode;
}
else
{
tail->next = newnode;
tail = newnode;
}
}
int Peak()
{
if (head == NULL)
return 0;
else
return head->data;
}
void display()
{
for (list *temp = head; temp != NULL; temp = temp->next)
{
cout << temp->data << "\t";
}
}
int delete_list()
{
};
void merge(list &left, list &right, list &obj){
mergeSort(left, left.size());
mergeSort(right, right.size());
merge(left, right, obj);
}
int main()
{
list obj;
int size, num;
cout<<"\t\t Enter the Size: "<<endl;
cin >> size;
for (int i = 0; i < size; i++)
{
cout << "\t\tEnter Numbers ";
cin >> num;
obj.create_list(num);
}
cout << endl;
cout << "\t\t BEFORE SORT: ";
obj.display();
mergeSort(obj, size);
cout << endl;
cout << "\t\t AFTER SORT: ";
obj.display();
cout << endl;
system("pause");
return 0;
}