ALG RECORD Printing
ALG RECORD Printing
LINEAR SEARCH
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
int array[50],i,target,num;
scanf("%d",&num);
for(i=0;i<num;++i)
scanf("%d",&array[i]);
scanf("%d",&target);
for(i=0;i<num;++i)
if(array[i]==target)
break;
if(i<num)
else
return 0;
}
OUTPUT :
RESULT:
EX NO: 2
BINARY SEARCH
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
int main()
scanf("%d",&n);
scanf("%d",&array[i]);
scanf("%d", &key);
low = 0;
high = n - 1;
mid = (low+high)/2;
low = mid + 1;
break;
else
high = mid - 1;
return 0;
}
OUTPUT:
RESULT :
EX NO: 3
STRING MATCHING ALGORITHM
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
#include<conio.h>
#include<string.h>
int status;
gets(st);
gets(pat);
if (status == -1)
else
return 0;
n = strlen(st);
m = strlen(pat);
temp++;
if (st[i + j] == pat[j])
count++;
}
if (count == m)
return temp;
count = 0;
return -1;
OUTPUT :
Enter the String.hingu.Dharmmendra@gmail.com
Enter the pattern to match. Dharm
RESULT :
EX NO: 4
INSERTION SORT
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
int i, j, temp;
temp = a[i];
j = i - 1;
a[j+1] = a[j];
j = j-1;
a[j+1] = temp;
int i;
int main()
printArr(a, n);
insert(a, n);
printf("\nAfter sorting array elements are - \n");
printArr(a, n);
return 0;
OUTPUT :
RESULT :
EX NO: 5
HEAP SORT
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
largest = left;
largest = right;
if (largest != i)
a[i] = a[largest];
a[largest] = temp;
heapify(a, n, largest);
heapify(a, n, i);
a[0] = a[i];
a[i] = temp;
heapify(a, i, 0);
}
}
printf("%d", arr[i]);
printf(" ");
int main()
printArr(a, n);
heapSort(a, n);
printArr(a, n);
return 0;
}
OUTPUT :
RESULT :
EX NO: 6
BREADTH FIRST SEARCH
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
int adj[10][10];
void bfs(int v)
queue[++rear] = i;
visited[queue[front]] = 1;
bfs(queue[front++]);
void main()
int v;
scanf("%d", &n);
queue[i] = 0;
visited[i] = 0;
scanf("%d", &adj[i][j]);
bfs(v);
if (visited[i])
printf("%d\t", i);
else
return 0;
OUTPUT :
Enter the number of vertices: 4
Enter graph data in matrixform:
0110
1001
1001
0110
Enter the starting vertex: 2
The node which are reachable are:
1 2 3 4
RESULT :
EX NO: 7
DEPTH FIRST SEARCH
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
#include <stdlib.h>
/* ADJACENCY MATRIX */
int source,V,E,time,visited[20],G[20][20];
void DFS(int i)
int j;
visited[i]=1;
printf(" %d->",i+1);
for(j=0;j<V;j++)
if(G[i][j]==1&&visited[j]==0)
DFS(j);
int main()
int i,j,v1,v2;
printf("\t\t\tGraphs\n");
scanf("%d",&E);
scanf("%d",&V);
for(i=0;i<V;i++)
for(j=0;j<V;j++)
G[i][j]=0;
for(i=0;i<E;i++)
{
scanf("%d%d",&v1,&v2);
G[v1-1][v2-1]=1;
for(i=0;i<V;i++)
for(j=0;j<V;j++)
printf(" %d ",G[i][j]);
printf("\n");
scanf("%d",&source);
DFS(source-1);
return 0;
}
OUTPUT :
RESULT :
EX NO: 8
DIJKSTRA’S ALGORITHM
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
int i,u,count,w,flag[20],min;
for(i=1;i<=n;i++)
flag[i]=0, dist[i]=cost[v][i];
count=2;
while(count<=n)
min=99;
for(w=1;w<=n;w++)
flag[u]=1;count++;
for(w=1;w<=n;w++)
dist[w]=dist[u]+cost[u][w];
min=dist[w]; u=w;
int main(){
int n,v,i,j,cost[20][20],dist[20];
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&cost[i][j]);if(cost[i][j] == 0)
cost[i][j]=infinity;
scanf("%d",&v);
dij(n,v,cost,dist);
for(i=1;i<=n;i++)
if(i!=v)
printf("%d->%d,cost=%d\n",v,i,dist[i]);
OUTPUT :
RESULT :
EX NO: 9
MINIMUM COST SPANNING TREE
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
inta,b,u,v,n,i,j,ne=1;
int visited[10]={0},min,mincost=0,cost[10][10];
void main()
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&cost[i][j]);
if(cost[i][j]==0)
cost[i][j]=999;
visited[1]=1;
printf("\n");
while(ne<n)
for(i=1,min=999;i<=n;i++)
for(j=1;j<=n;j++)
if(cost[i][j]<min)
if(visited[i]!=0)
min=cost[i][j];
a=u=i;
b=v=j;
if(visited[u]==0 || visited[v]==0)
{
printf("\n Edge %d:(%d %d) cost:%d",ne++,a,b,min);
mincost+=min;
visited[b]=1;
cost[a][b]=cost[b][a]=999;
OUTPUT :
RESULT :
EX NO: 10
ALL-PAIRS- SHORTEST-PATHS PROBLEM
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
int min(int,int);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)
p[i][j]=0;
else
p[i][j]=min(p[i][j],p[i][k]+p[k][j]);
main()
int min(inta,int b)
int p[10][10],w,n,e,u,v,i,j;
scanf("%d",&n);
scanf("%d",&e);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
p[i][j]=999;
for(i=1;i<=e;i++){
printf("\n Enter the end vertices of edge%d with its weight \n",i);
scanf("%d%d%d",&u,&v,&w);
p[u][v]=w;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d \t",p[i][j]);
printf("\n");
floyds(p,n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d \t",p[i][j]);
printf("\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
printf("\n <%d,%d>=%d",i,j,p[i][j]);
}
OUTPUT :
RESULT :
EX NO: 11
WARSHALL'S ALGORITHM
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
int n,a[10][10],p[10][10];
void path()
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
p[i][j]=a[i][j];
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(p[i][k]==1&&p[k][j]==1)p[i][j]=1;
void main()
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
path();
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%d ",p[i][j]);
printf("\n");
}
OUTPUT :
RESULT :
EX NO: 12
MAXIMUM AND MINIMUM NUMBERS
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h
>
#include<stdio.h
>int max, min;
int a[100];
void maxmin(int i, int j)
{
int max1, min1,
mid;if(i==j)
{
max = min = a[i];
}
else
{
if(i == j-1)
{
if(a[i] <a[j])
{
max = a[j];
min = a[i];
}
else
{
max = a[i];
min = a[j];
}
}
else
{
mid = (i+j)/2;
maxmin(i, mid);
max1 = max; min1 =
min;maxmin(mid+1, j);
if(max <max1)
max = max1;
if(min > min1)
min = min1;
}
}
}
int main ()
{
int i, num;
printf ("\nEnter the total number of numbers : ");
scanf ("%d",&num);
printf ("Enter the numbers :
\n");for (i=1;i<=num;i++)
scanf ("%d",&a[i]);
max = a[0];
min = a[0];
maxmin(1, num);
printf ("Minimum element in an array : %d\n", min);
printf ("Maximum element in an array : %d\n",
max);return 0;
}
OUTPUT :
Enter the total number of numbers :
5Enter the numbers :
29
21
64
27
20
Minimum element in an array : 20
Maximum element in an array : 64
RESULT :
EX NO: 13
MERGE SORT
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
#include <stdlib.h>
void merge(int arr[], int l, int m, int r)
{
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
/* create temp arrays
*/int L[n1], R[n2];
/* Copy data to temp arrays L[] and R[] */
for (i = 0; i < n1; i++)
L[i] = arr[l + i];
for (j = 0; j < n2; j++)
R[j] = arr[m + 1 + j];
/* Merge the temp arrays back into
arr[l..r]*/i = 0; // Initial index of first
subarray
j = 0; // Initial index of second subarray
k = l; // Initial index of merged subarray
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
}
else {
} k++;
}
arr[k] = L[i];
i++;
arr[k] = R[j];
j++;
/* Copy the remaining elements of L[], if there are any */
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
int main()
{
int arr[] = { 12, 11, 13, 5, 6, 7 };
int arr_size = sizeof(arr) / sizeof(arr[0]);
printf("Given array is \n");
printArray(arr, arr_size);
mergeSort(arr, 0, arr_size - 1);
printf("\nSorted array is \n");
printArray(arr, arr_size);
return 0;
}
OUTPUT :
Given array is
12 11 13 5 6 7
Sorted array
is5 6 7 11 12
13
RESULT :
EX NO: 14
QUICK SORT
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include <stdio.h>
int partition (int a[], int start, int end)
{
int pivot = a[end]; // pivot element
int i = (start - 1);
for (int j = start; j <= end - 1; j++)
{
if (a[j] < pivot)
{
i++;
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
int t = a[i+1];
a[i+1] = a[end];
a[end] = t;
return (i + 1);
}
RESULT :
EX NO: 15
N QUEENS PROBLEM
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
#include<math.h>
int a[30],count=0;
int place(int pos)
{
int i;
for(i=1;i<pos;i++)
{
if((a[i]==a[pos])||((abs(a[i]-a[pos])==abs(i-pos))))
return 0;
}
return 1;
}
void print_sol(int n)
{
int i,j;
count++;
printf("\n\nSolution #%d:\n",count);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i]==j)
printf("Q\t");
else
printf("*\t");
}
printf("\n");
}
}
void queen(int n)
{
int k=1;
a[k]=0;
while(k!=0)
{
a[k]=a[k]+1; while((a[k]<=n)&&!place(k))
a[k]++;
if(a[k]<=n)
{
if(k==n)
print_sol(n);
else
{
k++;
a[k]=0;
}
}
else
k--;
}
}
void main()
{
int i,n;
printf("Enter the number of Queens\n");
scanf("%d",&n);
queen(n);
printf("\nTotal solutions=%d",count);
}
OUTPUT :
RESULT :
EX NO: 16
TRAVELING SALESPERSON PROBLEM
DATE:
AIM :
ALGORITHM :
PROGRAM :
#include<stdio.h>
int s,c[100][100],ver;
float optimum=999,sum;
/* function to swap array elements */
void swap(int v[], int i, int j)
{
int t;
t = v[i];
v[i] = v[j];
v[j] = t;
}
/* recursive function to generate permutations */
Void brute_force(int v[], int n, int i)
{
int j,sum1,k;
if (i == n)
{
if(v[0]==s)
{
for (j=0; j<n; j++)
printf ("%d ", v[j]);
sum1=0;
for( k=0;k<n-1;k++)
{
sum1=sum1+c[v[k]][v[k+1]];
}
sum1=sum1+c[v[n-1]][s];
printf("sum = %d\n",sum1);
if (sum1<optimum)
optimum=sum1;
}
}
else
for (j=i; j<n; j++)
{
swap (v, i, j);
brute_force (v, n, i+1);
swap (v, i, j);
}
}
void nearest_neighbour(intver)
{
int min,p,i,j,vis[20],from;
for(i=1;i<=ver;i++)
vis[i]=0;
vis[s]=1;
from=s;
sum=0;
for(j=1;j<ver;j++)
{
min=999;
for(i=1;i<=ver;i++)
if(vis[i] !=1 &&c[from][i]<min && c[from][i] !=0 )
{
min= c[from][i];
p=i;
}
vis[p]=1;
from=p;
sum=sum+min;
}
sum=sum+c[from][s];
}
void main ()
{
int ver,v[100],i,j;
printf("Enter n : ");
scanf("%d",&ver);
for (i=0; i<ver; i++)
v[i] = i+1;
printf("Enter cost matrix\n");
for(i=1;i<=ver;i++)
for(j=1;j<=ver;j++)
scanf("%d",&c[i][j]);
printf("\nEnter source : ");
scanf("%d",&s);
brute_force (v, ver, 0);
printf("\nOptimum solution with brute force technique is=%f\n",optimum);
nearest_neighbour(ver);
printf("\nSolution with nearest neighbour technique is=%f\n",sum);
printf("The approximation val is=%f",((sum/optimum)-1)*100);
printf(" % ");
}
OUTPUT :
RESULT :