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

Final Lab

The document contains multiple C programming code snippets for various algorithms including Prim's, Kruskal's, Floyd-Warshall, Dijkstra's, and a greedy knapsack algorithm. Each section defines functions for implementing these algorithms, along with input/output operations for graph data and weights. The code also includes sorting algorithms like merge sort and quick sort, along with performance timing for sorting operations.

Uploaded by

rakeshsingh87273
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)
2 views6 pages

Final Lab

The document contains multiple C programming code snippets for various algorithms including Prim's, Kruskal's, Floyd-Warshall, Dijkstra's, and a greedy knapsack algorithm. Each section defines functions for implementing these algorithms, along with input/output operations for graph data and weights. The code also includes sorting algorithms like merge sort and quick sort, along with performance timing for sorting operations.

Uploaded by

rakeshsingh87273
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/ 6

pro 1

#include<stdio.h> pro 2
#define INF 999 #include<stdio.h>
#define MAX 100 #define INF 999
int prim(int c[10][10],int n,int s)
int p[MAX], c[MAX][MAX],t[MAX][2];
{
int find (int v). { int v[10],i,j,sum=0,ver[10],d[10],min,u;
while(p[v]) for(i=1;i<=n;i++)
v=p[v]; {
return v; } ver[i]=s;
void union1(int i,int j). { d[i]=c[s][i];
v[i]=0;
p[j]=i; } }
void kruskal(int n). { v[s]=1;
int i,j,k,u,v,min,res1,res2,sum=0; for(i=1;i<=n-1;i++)
for(k=1;k<n;k++). { {
min=INF; min=INF;
for(i=1;i<n-1;i++). { for(j=1;j<=n;j++)
if(v[j]==0 && d[j]<min)
for(j=1;j<=n;j++). { {
if(i==j)continue; min=d[j];
if(c[i][j]<min). { u=j;
u=find(i); }
v=find(j); v[u]=1;
sum=sum+d[u];
if(u!=v) {
printf("\n%d -> %d sum=%d",ver[u],u,sum);
res1=i; for(j=1;j<=n;j++)
res2=j; if(v[j]==0 && c[u][j]<d[j])
min=c[i][j];. } }. }. } {
union1(res1, find(res2)); d[j]=c[u][j];
t[k][1] =res1; ver[j]=u;
}
t[k][2]=res2; }
sum=sum+min; } return sum;
printf("\nCost of spanning tree is=%d", }
sum);printf("\nEdgesof spanning tree are void main()
:\n"); {
int c[10][10],i,j,res,s,n;
for(i=1;i<n;i++)
printf("\nEnter n value:");
printf("%d -> %d\n",t[i][1],t[i][2]);
scanf("%d",&n);
}
printf("\nEnterthegraphdata:\n");
int main()
for(i=1;i<=n;i++)
{int i,j,n;
for(j=1;j<=n;j++)
printf("\nEnter the n value:");scanf("
%d",&n);
scanf("%d",&c[i][j]);
for(i=1;i<=n;i++)p[i]=0; printf("\nEnterthesourcenode:");
printf("\nEnter the graph data:\n");
scanf("%d",&s);
for(i=1;i<=n;i++) res=prim(c,n,s);
for(j=1;j<=n;j++) printf("\nCost=%d",res);
scanf("%d",&c[i][j]); }
kruskal(n);
return 0;}
pro 3A
#include<stdio.h> for(i=1;i<=n;i++)
#define INF 999 for(j=1;j<=n;j++)
int min(int a, int b) scanf("%d",&a[i][j]);
{ warsh(a,n);
printf("\nResultant path matrix\n");for(i=1;i<
return(a<b)?a:b;
=n;i++). {
}
for(j=1;j<=n;j++)
void floyd(int p[][10],int n) printf("%d ",a[i][j]);
{ printf("\n");
int i,j,k; }return 0;. }
for(k=1;k<=n;k++) pro 4
for(i=1;i<=n;i++) #include<stdio.h>
for(j=1;j<=n;j++) #define INF 999
p[i][j]=min(p[i][j],p[i][k]+p[k][j]); void dijkstra(int c[10][10],int n,int s,int
} d[10]) {
void main() int v[10],min,u,i,j;
for(i=1;i<=n;i++). {
{
d[i]=c[s][i];
int a[10][10],n,i,j;
v[i]=0;. }
printf("\n Enter the n value:"); v[s]=1;
scanf("%d",&n); for(i=1;i<=n;i++) {
printf("\n Enter the graph data:\ min=INF;
n");for(i=1;i<=n;i++) for(j=1;j<=n;j++)
for(j=1;j<=n;j++) if(v[j]==0 && d[j]<min) {
scanf("%d",&a[i][j]); min=d[j];
floyd(a,n); u=j; }
printf("\n Shortest path matrix\n v[u]=1;
"); for(j=1;j<=n;j++)
for(i=1;i<=n;i++) if(v[j]==0 && (d[u]+c[u][j])<d[j])
d[j]=d[u]+c[u][j]; } }
{
intmain() {
for(j=1;j<=n;j++) intc[10][10],d[10],i,j,s,sum,n;
printf("%d ",a[i][j]); printf("\nEnternvalue:");
printf("\n"); scanf("%d",&n);
} printf("\nEnterthegraphdata:\n");
} for(i=1;i<=n;i++)
pro 3B for(j=1;j<=n;j++)
#include<stdio.h> scanf("%d",&c[i][j]);
void warsh(int p[][10],int n){ printf("\nEnterthesoucenode:");
int i,j,k; scanf("%d",&s);
for(k=1;k<=n;k++) dijkstra(c,n,s,d);
for(i=1;i<=n;i++)
for(i=1;i<=n;i++)
printf("\nShortestdistancefrom%dto%
for(j=1;j<=n;j++) dis%d",s,i,d[i]);
p[i][j]=p[i][j]||p[i][k]&&p[k][j]; return0;
} }
intmain()
{
inta[10][10],n,i,j;
printf("\nEnterthenvalue:");
scanf("%d",&n);
printf("\nEnterthegraphdata:\n");
PRO 8 int n;
#include <stdio.h> printf("Enter the number of elements: ");
#include <stdlib.h> scanf("%d", &n);
#include <time.h> if (n <= 5000)
void merge(int arr[], int left, int mid, int right) {
{
printf("Please enter a value greater than
int i, j, k;
int n1 = mid - left + 1; 5000\n");
int n2 = right - mid; return 1; }
int *L = (int *)malloc(n1 * sizeof(int)); int *arr = (int *)malloc(n * sizeof(int));
int *R = (int *)malloc(n2 * sizeof(int)); if (arr == NULL)
for (i = 0; i < n1; i++) {
L[i] = arr[left + i]; printf("Memory allocation failed\n");
for (j = 0; j < n2; j++) return 1;
R[j] = arr[mid + 1 + j]; }
i = 0; generateRandomArray(arr, n);
j = 0;
clock_t start = clock();
k = left;
while (i < n1 && j < n2) for (int i = 0; i < 1000; i++)
{ {
if (L[i] <= R[j]) mergeSort(arr, 0, n - 1);
{ }
arr[k] = L[i]; clock_t end = clock();
i++; double time_taken = ((double)(end - start)) /
} CLOCKS_PER_SEC / 1000.0;
else printf("Time taken to sort %d elements: %f
{ seconds\n", n, time_taken);
arr[k] = R[j];
free(arr);
j++;
} return 0;
k++; }
} PRO 6
while (i < n1) #include<stdio.h>
{ int w[10],p[10],n;
arr[k] = L[i]; int max(int a,int b)
i++; {
k++; return a>b?a:b;
} }
while (j < n2)
int knap(int i,int m)
{
arr[k] = R[j]; {
j++; if(i==n) return w[i]>m?0:p[i];
k++; if(w[i]>m) return knap(i+1,m);
} return max(knap(i+1,m),knap(i+1,m-w[i])+p[i]);
free(L); }
free(R); int main()
} {
void mergeSort(int arr[], int left, int right) int m,i,max_profit;
{ printf("\nEnter the no. of objects:");
if (left < right)
scanf("%d",&n);
{
int mid = left + (right - left) / 2; printf("\nEnter the knapsack capacity:");
mergeSort(arr, left, mid); scanf("%d",&m);
mergeSort(arr, mid + 1, right); printf("\nEnter profit followed by weight:\n");
merge(arr, left, mid, right); for(i=1;i<=n;i++)
} scanf("%d %d",&p[i],&w[i]);
} max_profit=knap(1,m);
void generateRandomArray(int arr[], int n) printf("\nMax profit=%d",max_profit);
{ return 0;
for (int i = 0; i < n; i++) }
arr[i] = rand() % 100000;
int main()
{
PRO 5 for (i = 0; i < n; i++) {
#include<stdio.h> ratio[i] = (double)p[i] / w[i];
int temp[10],k=0; }
void sort(int a[][10],int id[],int n) for (i = 0; i < n - 1; i++) {
{ for (int j = i + 1; j < n; j++) {
int i,j; if (ratio[i] < ratio[j]) {
for(i=1;i<=n;i++) double temp = ratio[i];
{ ratio[i] = ratio[j];
if(id[i]==0) ratio[j] = temp;
{ int temp2 = w[i];
id[i]=-1; w[i] = w[j];
temp[++k]=i; w[j] = temp2;
for(j=1;j<=n;j++) temp2 = p[i];
{ p[i] = p[j];
if(a[i][j]==1 && id[j]!=-1) p[j] = temp2;
id[j]--; }
} }
i=0;}}} }
void main() int currentWeight = 0;
{ maxprofit = 0.0;
int a[10][10],id[10],n,i,j; for (i = 0; i < n; i++) {
printf("\nEnter the n value:"); if (currentWeight + w[i] <= m) {
scanf("%d",&n); x[i] = 1; // Item i is selected
for(i=1;i<=n;i++) currentWeight += w[i];
id[i]=0; maxprofit += p[i];
printf("\nEnter the graph data:\n"); } else {
for(i=1;i<=n;i++) x[i] = (m - currentWeight) / (double)w[i]
for(j=1;j<=n;j++) ;
{ maxprofit += x[i] * p[i];
scanf("%d",&a[i][j]);
break;
if(a[i][j]==1)
}
id[j]++;
}
printf("Optimal solution for greedy
}
method: %.1f\n", maxprofit);
sort(a,id,n);
printf("Solution vector for greedy
if(k!=n)
method: ");
printf("\nTopological ordering not possible");
for (i = 0; i < n; i++)
else
printf("%d\t", x[i]);
{
}
printf("\nTopological ordering is:");
int main() {
for(i=1;i<=k;i++)
printf("Enter the number of objects: ");
printf("%d ",temp[i]);. }. }
scanf("%d", &n);
PRO 7 printf("Enter the objects' weights: ");
#include <stdio.h> for (i = 0; i < n; i++)
#define MAX 50 scanf("%d", &w[i]);
int p[MAX], w[MAX], x[MAX]; printf("Enter the objects' profits: ");
double maxprofit; for (i = 0; i < n; i++)
int n, m, i; scanf("%d", &p[i]);
void greedyKnapsack(int n, int w[], int p[], int printf("Enter the maximum capacity: ");
m) { scanf("%d", &m);
double ratio[MAX]; greedyKnapsack(n, w, p, m);
return 0;
}
PRO 9 PRO 10
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>
void selectionSort(int arr[], int n) { void swap(int* a, int* b). {
int i, j, min_idx; int t = *a;
for (i = 0; i < n-1; i++) { *a = *b;
min_idx = i; *b = t; }
for (j = i+1; j < n; j++) { int partition(int arr[], int low, int high). {
if (arr[j] < arr[min_idx]) { int pivot = arr[high];
min_idx = j; } } int i = (low - 1);
int temp = arr[min_idx]; for (int j = low; j <= high - 1; j++) {
arr[min_idx] = arr[i]; if (arr[j] < pivot) {
arr[i] = temp; }. } i++;
void generateRandomNumbers(int arr[], int swap(&arr[i], &arr[j]); } }
n) swap(&arr[i + 1], &arr[high]);
{ return (i + 1); }
for (int i = 0; i < n; i++) { void quickSort(int arr[], int low, int high) {
arr[i] = rand() % 10000; // Generate if (low < high) {
random numbers between 0 and 9999 int pi = partition(arr, low, high);
} } quickSort(arr, low, pi - 1);
int main(). { quickSort(arr, pi + 1, high); }. }
int n; void generateRandomNumbers(int arr[], int
printf("Enter number of elements: "); n)
scanf("%d", &n); {
if (n <= 5000) for (int i = 0; i < n; i++) {
{ arr[i] = rand() % 100000; }. }
printf("Please enter a value greater int main() {
than 5000\n"); int n;
return 1;
printf("Enter number of elements: ");
}
scanf("%d", &n); if (n <= 5000)
int *arr = (int *)malloc(n * sizeof(int));
{
printf("Please enter a value greater
if (arr == NULL)
than 5000\n");
{
return 1; }
printf("Memory allocation failed\n");
int *arr = (int *)malloc(n * sizeof(int));
return 1;
if (arr == NULL) {
}
printf("Memory allocation failed\n");
generateRandomNumbers(arr, n);
return 1; }
clock_t start = clock();
generateRandomNumbers(arr, n);
selectionSort(arr, n);
clock_t start = clock();
clock_t end = clock();
quickSort(arr, 0, n - 1);
double time_taken = ((double)(end - clock_t end = clock();
start)) / CLOCKS_PER_SEC;
double time_taken = ((double)(end -
printf("Time taken to sort %d elements: start)) / CLOCKS_PER_SEC;
%f seconds\n", n, time_taken); printf("Time taken to sort %d elements:
free(arr); %f seconds\n", n, time_taken);
return 0; free(arr);
} return 0;
}
PRO 11
#include <stdio.h>#include <stdlib.h>
PRO 12 #include <time.h>
include<stdio.h> void merge(int arr[], int left, int mid, int
#include<conio.h> right) {
#include<stdlib.h> int i, j, k; int n1 = mid - left + 1;
#define MAX 50 int n2 = right - mid;
int can_place(int c[],int r). { int *L = (int *)malloc(n1 * sizeof(int));
int i; int *R = (int *)malloc(n2 * sizeof(int));
for(i=0;i<r;i++) for (i = 0; i < n1; i++)
if(c[i]==c[r] || (abs(c[i]-c[r])== L[i] = arr[left + i];
abs(i-r))) for (j = 0; j < n2; j++)
R[j] = arr[mid + 1 + j]; i = 0; j = 0;
return 0;
k =left;
return 1; }. { while (i < n1 && j < n2) {
void display(int c[],int n) if (L[i] <= R[j]) {
int i,j; arr[k] = L[i]; i++; }
char cb[10][10]; else {
for(i=0;i<n;i++) arr[k] = R[j]; j++; } k++; }
for(j=0;j<n;j++) while (i < n1) {
cb[i][j]='-'; arr[k] = L[i]; i++; k++; }
for(i=0;i<n;i++) while (j < n2) {
cb[i][c[i]]='Q'; arr[k] = R[j]; j++;
for(i=0;i<n;i++). { k++; } free(L); free(R); }
for(j=0;j<n;j++) void mergeSort(int arr[], int left, int right).
{
printf("%c",cb[i][j]);
if (left < right) {
printf("\n"); }. }. { int mid = left + (right - left) / 2;
void n_queens(int n) mergeSort(arr, left, mid);
int r; mergeSort(arr, mid + 1, right);
int c[MAX]; merge(arr, left, mid, right); }}
c[0]=-1; void generateRandomArray(int arr[], int n)
r=0; {
while(r>=0) for (int i = 0; i < n; i++)
{ c[r]++; arr[i] = rand() % 100000; //
while(c[r]<n && !can_place(c,r)) Generate random integers between 0 and
c[r]++; 99999 }
if(c[r]<n) int main() {
int n;
{ if(r==n-1)
printf("Enter the number of elements: "
{ display(c,n); );
printf("\n\n"); } scanf("%d", &n);
else if (n <= 5000) {
{ r++; printf("Please enter a value greater
c[r]=-1; }. } than 5000\n");
else return 1; }
r--; }. } int *arr = (int *)malloc(n * sizeof(int));
void main() if (arr == NULL) {
{ printf("Memory allocation failed\n");
int n; return 1; }
clrscr(); generateRandomArray(arr, n);
clock_t start = clock();
printf("\nEnter the no. of queens
for (int i = 0; i < 1000; i++) {
:");
mergeSort(arr, 0, n - 1); }
scanf("%d",&n); clock_t end = clock();
n_queens(n); double time_taken = ((double)(end -
getch(); start)) / CLOCKS_PER_SEC / 1000.0;
} printf("Time taken to sort %d elements:
%f seconds\n", n, time_taken);
free(arr);
return 0;}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy