Ada Lab PGM
Ada Lab PGM
quicksort(a, p, j - 1);
#include <stdio.h> quicksort(a, j + 1, q);
#include <time.h> }}
#include <stdlib.h> void main() {
#define MAX 100 printf("Enter number of
clock_t start, end; elements: ");
float time_taken; scanf("%d", &n);
int a[100000], n, i, j, temp; printf("Generating
void swap(int* a, int* b) { random array
int temp = *a; elements...\n");
*a = *b; for (i = 0; i < n; i++) {
*b = temp; a[i] = rand() % 10000;
} }
int partition(int a[], int p, printf("Sorting
int r) { array...\n");
int pivotindex = p + start = clock();
rand() % (r - p + 1); quicksort(a, 0, n - 1);
int pivot = a[pivotindex]; end = clock();
int i = p - 1; printf("Sorted Array
swap(&a[pivotindex], elements are:\n");
&a[r]); for (i = 0; i < n; i++) {
for (j = p; j < r; j++) { printf("%d\t", a[i]);
if (a[j] < pivot) { }
i++; time_taken = (float)(end
swap(&a[i], &a[j]); - start) / CLOCKS_PER_SEC;
}} printf("\nTime taken
swap(&a[i + 1], &a[r]); is %f seconds\n",
return i + 1;} time_taken);
void quicksort(int a[], int p, }
int q) {
if (p < q) {
Floyd’s
#include <stdio.h>
#include <stdlib.h> printf("Enter the cost
int min(int a, int b) { adjacency matrix (use
return (a < b) ? a : b; 9999 for infinity):\n");
} for (i = 0; i < n; i++) {
void FLOYD(int n, int for (j = 0; j < n; j++) {
cost[20][20], int D[20][20]) scanf("%d",
{ &cost[i][j]);
int i, j, k; }}
for (i = 0; i < n; i++) { printf("Cost adjacency
for (j = 0; j < n; j++) { matrix:\n");
D[i][j] = cost[i][j]; for (i = 0; i < n; i++) {
}} for (j = 0; j < n; j++) {
vertices printf("%d\t",
for (k = 0; k < n; k++) { cost[i][j]);
for (i = 0; i < n; i++) { }
for (j = 0; j < n; j++) { printf("\n");
D[i][j] = }
min(D[i][j], D[i][k] + FLOYD(n, cost, D);
D[k][j]); printf("Shortest path
} matrix:\n");
} for (i = 0; i < n; i++) {
} for (j = 0; j < n; j++) {
} printf("%d\t",
int main() { D[i][j]);
int n, cost[20][20], }
D[20][20], i, j; printf("\n");
printf("Enter the }
number of vertices: "); return 0;
scanf("%d", &n); }
Warshal
#include<stdio.h> void warshall(int
a[10][10],int n)
void warshall(int {
a[10][10],int); int i,j,k;
for(k=1;k<=n;k++)
int main() for(j=1;j<=n;j++)
{ for(i=1;i<=n;i++)
int i,j,n,a[10][10];
printf("enter the number a[i][j]=a[i][j]||(a[i][k]&&a[
of vertices\n"); k][j]);
scanf("%d",&n); }
printf("enter the
adjacency matrix\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf("(%d,%d):",i,j);
scanf("%d",&a[i][j]);
}
warshall(a,n);
printf("all pair distance
matrix\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
return 0;
}
GReedy knapsack
int currentweight = 0;
#include <stdio.h> max_profit = 0.0;
#define Max 60 for (i = 0; i < n; i++) {
int p[Max], w[Max]; if (currentweight + w[i]
float x[Max]; <= m) {
double max_profit; x[i] = 1;
int n, m, i; currentweight += w[i];
void greedyknapsack(int n, max_profit += p[i];
int w[], int p[], int m) { } else {
double ratio[Max]; x[i] = (m -
for (i = 0; i < n; i++) { currentweight) /
ratio[i] = (double)p[i] / (double)w[i];
w[i]; max_profit += x[i] * p[i];
} break;
for (i = 0; i < n - 1; i++) { } }
for (int j = i + 1; j < n; printf("Solution vector
j++) { for greedy method:\n");
if (ratio[i] < ratio[j]) for (i = 0; i < n; i++) {
{ printf("%f\t", x[i]);
double temp = }
ratio[i]; printf("\nOptimal
ratio[i] = ratio[j]; solution for greedy
ratio[j] = temp; method = %f\n",
int temp2 = w[i]; max_profit);
w[i] = w[j];
w[j] = temp2; int main() {
temp2 = p[i]; printf("Enter the
p[i] = p[j]; number of objects: ");
p[j] = temp2; scanf("%d", &n);
}}}
printf("Enter the
capacity of the knapsack:
");
scanf("%d", &m);
greedyknapsack(n, w, p,
m);
return 0;
}
present = 1;
SUBSET for (j = 1; j <= n; j++)
{
#include <stdio.h> if (x[j] == 1)
#include <math.h> printf("%d ",
void sub_set(long int num, a[j]);
int n, int x[]); }
int main() { printf("} = %d\n", d);
int a[50], x[50], n, d, }
sum, present = 0; }
long int i, j; if (!present)
printf("Enter the printf("Solution does
number of elements: "); not exist\n");
scanf("%d", &n);
printf("Enter the return 0;
elements:\n"); }
for (i = 1; i <= n; i++) void sub_set(long int num,
scanf("%d", &a[i]); int n, int x[]) {
printf("Enter the sum of long int i;
the subset: "); for (i = 1; i <= n; i++)
scanf("%d", &d); x[i] = 0;
for (i = 1; i < pow(2, n);
i++) { for (i = n; num != 0; i--) {
sub_set(i, n, x); x[i] = num % 2;
sum = 0; num = num / 2;
for (j = 1; j <= n; j++) { }
if (x[j] == 1) }
sum += a[j];
}
if (d == sum) {
printf("Subset is { ");
using Dijkstra's
algorithm. for (i = 1; i <= n; i++) {
printf("The shortest
#include <stdio.h> path between vertex %d
#define INF 999 to %d is %d\n", s, i, dist[i]);
#define MAX 10 }