0% found this document useful (0 votes)
9 views

Lab DAA

Uploaded by

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

Lab DAA

Uploaded by

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

1.

Selection Sort
#include<stdio.h>
#include<time.h>
void swap(int *xp,int*yp)
{
int temp=*xp;
*xp=*yp;
*yp=temp;
}
void selectionsort(int arr[],int n)
{
int i,j,min_idx;
for(i=0;i<n-1;i++)
{
min_idx=i;
for(j=i+1;j<n;j++)
if(arr[j]<arr[min_idx])
min_idx=j;
if(min_idx!=i)
swap(&arr[min_idx],&arr[i]);
}
}
void printArray(int arr[],int size)
{
int i;
for(i=0;i<size;i++)
printf("%d",arr[i]);
printf("\n");
}
int main()
{
int n, i;
clock_t start, end;
double time_taken;
printf("Enter the number of elements to be sorted: ");
scanf("%d", &n);
int arr[n];
printf("Generating %d random elements...\n", n);
srand(time(NULL));
for(i = 0; i < n; i++)
{
arr[i] = rand() % 5000;
}
printf("Sorting the array using Merge Sort...\n");
start = clock(); // Start timer
selectionsort(arr, n);
end = clock(); // Stop timer
printf("Sorted array: \n");
for(i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
time_taken = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("\nTime taken to sort %d elements: %lf seconds", n, time_taken);
return 0;
}
2. MERGE SORT
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void merge_sort(int[], int, int);
void merge(int[], int, int, int);

int main()
{
int n, i;
clock_t start, end;
double time_taken;

printf("Enter the number of elements to be sorted: ");


scanf("%d", &n);
int arr[n];
printf("Generating %d random elements...\n", n);
srand(time(NULL));
for(i = 0; i < n; i++)
{
arr[i] = rand() % 10000;
}
printf("Sorting the array using Merge Sort...\n");
start = clock();
merge_sort(arr, 0, n - 1);
end = clock();
printf("Sorted array: \n");
for(i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
time_taken = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("\nTime taken to sort %d elements: %lf seconds", n, time_taken);
return 0;
}

void merge_sort(int arr[], int low, int high)


{
int mid;
if(low < high)
{
mid = (low + high) / 2;
merge_sort(arr, low, mid);
merge_sort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
void merge(int arr[], int low, int mid, int high)
{
int i = low, j = mid + 1, k = 0, temp[high - low + 1];
while(i <= mid && j <= high)
{
if(arr[i] <= arr[j])
{
temp[k++] = arr[i++];
}
else
{
temp[k++] = arr[j++];
}
}
while(i <= mid)
{
temp[k++] = arr[i++];
}
while(j <= high)
{
temp[k++] = arr[j++];
}

for(i = low, k = 0; i <= high; i++, k++)


{
arr[i] = temp[k];
}
}
3. QUICK SORT
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void swap(int* a, int* b)


{
int temp = *a;
*a = *b;
*b = temp;
}

int partition(int arr[], int low, int high)


{

int pivot = arr[low];


int i = low;
int j = high;
while (i < j)
{
while (arr[i] <= pivot && i <= high - 1)
{
i++;
}
while (arr[j] > pivot && j >= low + 1)
{
j--;
}
if (i < j)
{
swap(&arr[i], &arr[j]);
}
}
swap(&arr[low], &arr[j]);
return j;
}

void quickSort(int arr[], int low, int high)


{
if (low < high)
{
int partitionIndex = partition(arr, low, high);
quickSort(arr, low, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, high);
}
}
int main()
{
int n, i;
clock_t start, end;
double time_taken;

printf("Enter the number of elements to be sorted: ");


scanf("%d", &n);
int arr[n];
printf("Generating %d random elements...\n", n);
srand(time(NULL));
for(i = 0; i < n; i++)
{
arr[i] = rand() % 10000;
}
printf("Sorting the array using Quick Sort...\n");
start = clock();
quickSort(arr, 0, n - 1);
end = clock();
printf("\nSorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
time_taken = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("\nTime taken to sort %d elements: %lf seconds", n, time_taken);
return 0;
}
4. PRIM ALGORITHM
#include <stdio.h>
#include <limits.h>
#include <stdbool.h>
#define V 5

int minKey(int key[], bool mstSet[])


{
int min = INT_MAX, min_index;
for (int v = 0; v < V; v++)
if (mstSet[v] == false && key[v] < min)
min = key[v], min_index = v;
return min_index;
}
void printMST(int parent[], int graph[V][V])
{
printf("Edge \t Weight \n");
for (int i = 1; i < V; i++)
printf("%d - %d \t %d \n", parent[i], i, graph[i][parent[i]]);
}
void primMST(int graph[V][V])
{
int parent[V];
int key[V];
bool mstSet[V];
for (int i = 0; i < V; i++)
key[i] = INT_MAX, mstSet[i] = false;
key[0] = 0;
parent[0] = -1;
for (int count = 0; count < V - 1; count++)
{
int u = minKey(key, mstSet);
mstSet[u] = true;
for (int v = 0; v < V; v++)
if (graph[u][v] && mstSet[v] == false && graph[u][v] < key[v])
parent[v] = u, key[v] = graph[u][v];
}
printMST(parent, graph);
}
int main()
{
int graph[V][V] = { { 0, 2, 0, 6, 0 },
{ 2, 0, 3, 8, 5 },
{ 0, 3, 0, 0, 7 },
{ 6, 8, 0, 0, 9 },
{ 0, 5, 7, 9, 0 } };
primMST(graph);
return 0;
}

You might also like