ada exps
ada exps
h>
#include <stdlib.h>
#include <time.h>
int main() {
int n, a[20000], k;
clock_t st, et;
double ts;
st = clock();
selectionSort(a, n);
et = clock();
return 0;
}
2.Topological Sort
#include <stdio.h>
find_indegree();
for (i = 0; i < n; i++) {
if (indegree[i] == 0)
s[++top] = i;
}
int main() {
int i, j;
3. Merge sort
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n, a[20000];
clock_t st, et;
double ts;
if (n > 20000) {
printf("Maximum limit is 20000. Exiting.\n");
return 1;
}
st = clock();
MergeSort(a, 0, n - 1);
et = clock();
ts = (double)(et - st) / CLOCKS_PER_SEC;
return 0;
}
4. Quick Sort
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// QuickSort function
void QuickSort(int a[], int low, int high) {
int i, j, key;
key = low;
i = low + 1;
j = high;
while (i <= j) {
while (i <= high && a[i] <= a[key])
i++;
while (j >= low && a[j] > a[key])
j--;
if (i < j)
Exch(&a[i], &a[j]);
}
Exch(&a[j], &a[key]);
int main() {
int n, a[10000], k;
clock_t st, et;
double ts;
if (n > 10000) {
printf("Maximum supported limit is 10000\n");
return 1;
}
st = clock();
QuickSort(a, 0, n - 1);
et = clock();
5. Knapsack
#include <stdio.h>
int w[10], p[10], v[10], knap[10][10], x[10], n; // Weights, Profits, used flags,
solution table, solution items
int max(int i, int j) {
return (i > j) ? i : j;
}
if (v[i] != 0)
return knap[i][j];
if (i == 0 || j == 0)
value = 0;
else if (j < w[i])
value = knapsack(i - 1, j);
else
value = max(knapsack(i - 1, j), p[i] + knapsack(i - 1, j - w[i]));
knap[i][j] = value;
v[i] = 1;
return knap[i][j];
}
int main() {
int profit = 0, count = 0, i, j, cap;
while (j != 0 && i != 0) {
if (v[i] && (knap[i][j] != knap[i - 1][j])) {
x[i] = 1;
j = j - w[i];
count++;
} else {
x[i] = 0;
}
i--;
}
7. Prims
#include <stdio.h>
int a, b, u, v, n, i, j, ne = 1;
int visited[10] = {0}, min, mincost = 0, cost[10][10];
void main() {
printf("\nEnter the number of nodes: ");
scanf("%d", &n);
if (visited[u] == 0 || visited[v] == 0) {
printf("Edge %d: (%d %d) cost: %d\n", ne++, a, b, min);
mincost += min;
visited[b] = 1;
}
9. Dijkstra’s Algorithm:
#include <stdio.h>
#define infinity 999
count = 2;
flag[u] = 1;
count++;
int main() {
int n, v, i, j, cost[10][10], dist[10];
return 0;
}
8. Kruskal’s
#include <stdio.h>
#include <stdlib.h>
int i, j, k, a, b, u, v, n, ne = 1;
int min, mincost = 0, cost[9][9], parent[9];
int find(int i) {
while (parent[i])
i = parent[i];
return i;
}
void main() {
printf("\nEnter the number of vertices: ");
scanf("%d", &n);
u = find(u);
v = find(v);
if (uni(u, v)) {
printf("%d edge (%d,%d) = %d\n", ne++, a, b, min);
mincost += min;
}