Daa Lab Manual (Part A)
Daa Lab Manual (Part A)
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<math.h>
clock_t start,end;
double tc,t;
void quicksort(int a[10], int low,int high)
{
int j;
if(low < high)
{
j=partition(a,low,high);
quicksort(a,low,j-1);
quicksort(a,j+1,high);
}
}
int partition(int a[10],int low,int high)
{
int pivot,j,temp,i;
pivot=low;
i=low;
j=high;
while(i<j)
{
while(a[i]<=a[pivot])
i++;
while(a[j]>a[pivot])
j--;
if(i<j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
temp=a[pivot];
a[pivot]=a[j];
a[j]=temp;
return j;
}
void main()
{
int n,a[50],i;
clrscr();
printf("Enter the size of array\n");
scanf("%d",&n);
printf("Enter the array elements\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
start=clock();
printf("Starting Clock=%ld\n",start);
quicksort(a,0,n-1);
end=clock();
printf("Ending Clock=%ld\n",end);
printf("Sorted Array is\n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
t=n*log(n);
printf(“Time Complexity=%f”,t)
tc=(double)(start-end)/CLOCKS_PER_SEC;
printf("Time Duration=%f",tc);
getch();
}
OUTPUT:
7. Write a program to implement 0/1 knapsack problem using dynamic programming.
SOURCE CODE:
#include<stdio.h>
#include<conio.h>
int i,j,n,capacity,w[50],p[50],maxprofit;
int maximum(int x,int y)
{
if(x>y)
return x;
else
return y;
}
knapsack(int i,int c)
{
if(i==n)
return((c<w[n])?0:p[n]);
if(c<w[i])
return knapsack(i+1,c);
return maximum(knapsack(i+1,c),knapsack(i+1,c-w[i])+p[i]);
}
void main()
{
clrscr();
printf("Enter the no.of objects");
scanf("%d",&n);
printf("Enter the weights");
for(i=0;i<n;i++)
scanf("%d",&w[i]);
printf("Enter the profits");
for(i=0;i<n;i++)
scanf("%d",&p[i]);
printf("Enter the capacity");
scanf("%d",&capacity);
maxprofit=knapsack(0,capacity);
printf("Maximum Profit=%d",maxprofit);
getch();
}
OUTPUT:
8. Write a program to implement knapsack algorithm using Greedy Solution.
SOURCE CODE:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void knapsackGreedy(int capacity,int n,int w[20],int P[20])
{
double x[20];
double sum=0.0;
int i,j;
double ratio[20];
int order[20];
int Rc=capacity;
for(i=0;i<n;i++)
{
ratio[i]=(double)P[i]/w[i];
}
for(i=0;i<n;i++)
{
order[i]=i;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(ratio[order[j]]<ratio[order[j+1]])
{
int tempIndex=order[j];
order[j]=order[j+1];
order[j+1]=tempIndex;
}
}
}
for(i=0;i<n;i++)
{
x[i]=0;
}
for(i=0;i<n;i++)
{
int currentIndex=order[i];
if(w[currentIndex]<=Rc)
{
x[currentIndex]=1;
Rc=Rc-w[currentIndex];
sum=sum+P[currentIndex];
}
else
{
x[currentIndex]=(double)Rc/w[currentIndex];
sum+=(P[currentIndex]*x[currentIndex]);
break;
}
}
printf("\nMaximum profit: %.21f\n",sum);
}
int main()
{
int capacity,n,i,w[20],P[20];
clrscr();
printf("Enter the number of objects(n): ");
scanf("%d",&n);
printf("Enter Knapsack capacity(M): ");
scanf("%d",&capacity);
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int a[10][10],visited[10],n,cost=0;
void get()
{
int i,j;
printf("\n\nEnter Number of Cities: ");
scanf("%d",&n);
printf("\nEnter Cost Matrix: \n");
for(i=0;i<n;i++)
{
printf("\n Enter Elements of Row #:%d\n",i+1);
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
visited[i]=0;
}
printf("\n\nThe Cost Matrix is:\n");
for(i=0;i<n;i++)
{
printf("\n\n");
for(j=0;j<n;j++)
printf("\t%d",a[i][j]);
}
}
void mincost(int city)
{
int i,ncity,least(int city);
visited[city]=1;
printf("%d ===>",city+1);
ncity=least(city);
if(ncity==999)
{
ncity=0;
printf("%d",ncity+1);
cost+=a[city][ncity];
return;
}
mincost(ncity);
}
int least(int c)
{
int i,nc=999;
int min=999,kmin;
for(i=0;i<n;i++)
{
if((a[c][i]!=0)&&(visited[i]==0))
if(a[c][i]<min)
{
min=a[i][0]+a[c][i];
kmin=a[c][i];
nc=i;
}
}
if(min!=999)
cost+=kmin;
return nc;
}
void put()
{
printf("\n\nMinimum cost:");
printf("%d",cost);
}
void main()
{
clrscr();
get();
printf("\n\nThe Path is:\n\n");
mincost(0);
put();
getch();
}
OUTPUT: