You are on page 1of 5

Subject :- DSA

Year :- SE Class :- SEIT 1 Batch :-B1


Roll No :-27 Student Name :- Sahil Suryakant Gaikwad
Date of Experiment :- Date of submission :-

PRACTICAL. 10
Aim: - To implement quick sort and merge sort using arrays.
Code: -
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int a[81], b[81];
int n;
void swap(int *x, int *y)
{
int t;
t = *x;
*x = *y;
*y = t;
}
int partition(int a[], int lb, int ub)
{
int pivot, start, end;
pivot = a[lb];
start = lb;
end = ub;
while(start<end)
{
while(a[start] <= pivot)
{
start++;
}
while(a[end] >pivot)
{
end--;
}
if(start<end)
{
swap(&a[start], &a[end]);
}
}
swap(&a[lb], &a[end]);
return end;
}
void quick_sort(int a[], int lb, int ub)
{
int pos;
if(lb<ub)
{
pos = partition(a, lb, ub);
quick_sort(a,lb, pos - 1);
quick_sort(a, pos + 1, ub);
}
}
void merge(int a[], int lb, int mid, int ub)
{
int i, j, k;
i = lb;
j = mid + 1;
k = lb;
while(i<= mid&&j<= ub)
{
if(a[i] <= a[j])
{
b[k] = a[i];
i++;
}
else
{
b[k] = a[j];
j++;
}
k++;
}
if(i>mid)
{
while(j<= ub)
{
b[k] = a[j];
j++;
k++;
}
}
else
{
while(i<= mid)
{
b[k] = a[i];
i++;
k++;
}
}
for(k = lb; k<= ub; k++)
{
a[k] = b[k];
}
}
void merge_sort(int a[], int lb, int ub)
{
int mid;
if(lb<ub)
{
mid = (lb + ub)/2;
merge_sort(a, lb, mid);
merge_sort(a, mid + 1, ub);
merge(a, lb, mid, ub);
}
}
void main()
{
printf("\n Enter no of elements in the array: ");
scanf("%d", &n);
for(int i = 0; i<n; i++)
{
printf("\n Enter %d element: ", i + 1);
scanf("%d", &a[i]);
}
printf("\n Array elements are: ");
for(int i = 0; i<n; i++)
{
printf("%d ", a[i]);
}
quick_sort(a, 0, n - 1);
printf("\n Sorted elements Quick Sort: ");
for(int i = 0; i<n; i++)
{
printf("%d ", a[i]);
}
merge_sort(a, 0, n - 1);
printf("\n Sorted elements Merge Sort: ");
for(int i = 0; i<n; i++)
{
printf("%d ", a[i]);
}
}
Output: -

Conclusion: - Thus we studied how to implement quick sort and merge


sort using arrays.

You might also like