v #include<stdio.h> selection 1 #include<stdlib.h> #include<time.h> void selectionsort(int A[],int n) { int i,j,min,temp; for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) { if(A[j]<A[min]) min=j; } if(min!=i) { temp=A[i]; A[i]=A[min]; A[min]=temp; } } } int main() { srand(time(NULL)); int n=30000; int elements[30000]; for(int i=0;i<n;i++) elements[i]=rand()%1000; for(int size=5000;size<=n;size+=2000) { int arr[30000]; for(int i=0;i<size;i++) arr[i]=elements[i]; clock_t start=clock(); selectionsort(arr,size); clock_t stop=clock(); double time_taken=(double)(stop - start)/CLOCKS_PER_SEC; printf("Time taken to sort %d elements = %f seconds\n", size,time_taken); } return 0; } v #include<stdio.h> merge 2 #include<stdlib.h> #include<time.h> void merge(int a[],int low,int mid,int high) { int i=low,j=mid+1,k=low,b[100000]; while(i<=mid && j<=high) { if(a[i]<a[j]) b[k++]=a[i++]; else b[k++]=a[j++]; } while(i<=mid) b[k++]=a[i++]; while(j<=high) b[k++]=a[j++]; for(i=low;i<=high;i++) a[i]=b[i]; } void mergesort(int a[],int low,int high) { if(low<high) { int mid=(low+high)/2; mergesort(a,low,mid); mergesort(a,mid+1,high); merge(a,low,mid,high); } } int main() { int n=100000,a[100000],b[100000],i,size; srand(time(NULL)); for(i=0;i<n;i++) a[i]=rand()%1000; for(size=5000;size<=n;size+=2000) { for(i=0;i<size;i++) b[i]=a[i]; clock_t start=clock(); mergesort(b,0,size-1); clock_t end=clock(); printf("Time taken to sort %d elements = %lf seconds\n", size, (double)(end- start)/CLOCKS_PER_SEC); } return 0; } v #include<stdio.h> quick 3 #include<stdlib.h> #include<time.h> void quicksort(int a[],int low,int high); int partition(int a[],int low,int high); void swap(int *a,int *b); void quicksort(int a[],int low,int high) { if(low<high) { int pi=partition(a,low,high); quicksort(a,low,pi-1); quicksort(a,pi+1,high); } } void swap(int *a,int *b) { int t=*a; *a=*b; *b=t; } int partition(int a[],int low,int high) { int pivot=a[high]; int i=low-1; for(int j=low;j<high;j++) { if(a[j]<=pivot) { i++; swap(&a[i],&a[j]); } } swap(&a[i+1],&a[high]); return i+1; } int main() { srand(time(NULL)); int n=100000; int elements[100000]; for(int i=0;i<n;i++) elements[i]=rand()%1000; for(int size=5000;size<=n;size+=2000) { int arr[100000]; for(int i=0;i<size;i++) arr[i]=elements[i]; clock_t start=clock(); quicksort(arr,0,size-1); clock_t end=clock(); printf("Time taken to sort %d elements = %lf seconds\n", size, (double)(end- start)/CLOCKS_PER_SEC); } return 0; } #include<stdio.h> topo 4 void ts(int a[20][20],int n) { int t[10],vis[10],stack[10],indeg[10]; int i,j,top=0,ele,k=1; for(i=1;i<=n;i++) { t[i]=0; vis[i]=0; indeg[i]=0; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(a[i][j]==1) indeg[j]++; printf("Indegree Array: "); for(i=1;i<=n;i++) printf("%d ",indeg[i]); for(i=1;i<=n;i++) { if(indeg[i]==0) { stack[++top]=i; vis[i]=1; } } while(top>0) { ele=stack[top--]; t[k++]=ele; for(j=1;j<=n;j++) { if(a[ele][j]==1 && vis[j]==0) { indeg[j]--; if(indeg[j]==0) { stack[++top]=j; vis[j]=1; } } } } printf("\nTopological Ordering: "); for(i=1;i<=n;i++) printf("%d ",t[i]); } int main() { int n,a[20][20],i,j; printf("Enter the number of nodes: "); scanf("%d",&n); printf("Enter the adjacency matrix:\n"); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); ts(a,n); return 0; } #include<stdio.h> string 5 #include<string.h> int main() { char text[100],pattern[100]; int i,j,n,m,flag=0; printf("Enter the text: "); scanf("%s",text); printf("Enter the pattern: "); scanf("%s",pattern); n=strlen(text); m=strlen(pattern); for(i=0;i<=n-m;i++) { for(j=0;j<m;j++) { if(text[i+j]!=pattern[j]) break; } if(j==m) { printf("Pattern found at position %d\n",i+1); flag=1; } } if(flag==0) printf("Pattern not found"); return 0; } #include<stdio.h> kanscak 66 int w[10],p[10],n; int max(int a,int b) { return a>b?a:b; } int knap(int i,int m) { if(i==n) return w[i]>m?0:p[i]; if(w[i]>m) return knap(i+1,m); return max(knap(i+1,m),knap(i+1,m- w[i])+p[i]); } int main() { int m,i,max_profit; printf("Enter the no. of objects: "); scanf("%d",&n); printf("Enter the knapsack capacity: "); scanf("%d",&m); printf("Enter profit followed by weight:\n"); for(i=1;i<=n;i++) scanf("%d %d",&p[i],&w[i]); max_profit=knap(1,m); printf("Maximum Profit = %d\n",max_profit); return 0; } #include<stdio.h> Floyd 7a int min(int a,int b) { if(a<b) return a; else return b; } void floyds(int p[10][10],int n) { int i,j,k; for(k=1;k<=n;k++) { 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]); } } } } int main() { int p[10][10],n,i,j; printf("Enter the number of vertices: "); scanf("%d",&n); printf("Enter the cost matrix:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&p[i][j]); if(p[i][j]==0) p[i][j]=999; } } floyds(p,n); printf("\nThe shortest paths are:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i!=j) printf("<%d,%d> = %d\n",i,j,p[i][j]); } } return 0; } #include<stdio.h> warsh 7b int max(int a,int b) { if(a>b) return a; else return b; } void warshal(int p[10][10],int n) { int i,j,k; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) p[i][j]=max(p[i][j],p[i][k]&&p[k][j]); } int main() { int p[10][10]={0},n,i,j; printf("Enter the number of vertices: "); scanf("%d",&n); printf("Enter the adjacency matrix:\n"); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&p[i][j]); warshal(p,n); printf("\nTransitive Closure:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%d\t",p[i][j]); printf("\n"); } return 0; } #include<stdio.h> prim 8 #include<time.h> int visited[10]={0},cost[10][10],min,mincost=0; int i,j,ne=1,a,b,u,v; int main() { int num; printf("Prim's Algorithm\n"); printf("Enter the number of nodes: "); scanf("%d",&num); printf("Enter the adjacency matrix:\n"); for(i=1;i<=num;i++) { for(j=1;j<=num;j++) { scanf("%d",&cost[i][j]); if(cost[i][j]==0) cost[i][j]=999; } } clock_t start=clock(); visited[1]=1; while(ne<num) { for(i=1,min=999;i<=num;i++) { for(j=1;j<=num;j++) { if(cost[i][j]<min) { if(visited[i]!=0) { min=cost[i][j]; a=u=i; b=v=j; } } } } printf("Edge %d:(%d - %d) Cost:%d\n",ne++,a,b,min); mincost+=min; visited[b]=1; cost[a][b]=cost[b][a]=999; } printf("Minimum Cost=%d\n",mincost); clock_t end=clock(); printf("Execution Time=%lf\n", (double)(end- start)/CLOCKS_PER_SEC); return 0; } #include<stdio.h> Kruskal 9 #include<time.h> int w[10],p[10],n; int i,j,k,a,b,u,v,ne=1; int min,mincost=0,cost[9][9],parent[9]; int find(int); int uni(int,int); int main() { printf("Implementation of Kruskal's Algorithm\n"); printf("Enter the number of vertices: "); scanf("%d",&n); printf("Enter the cost adjacency matrix:\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; } } clock_t start=clock(); printf("Edges of Minimum Cost Spanning Tree:\n"); while(ne<n) { for(i=1,min=999;i<=n;i++) { for(j=1;j<=n;j++) { if(cost[i][j]<min) { min=cost[i][j]; a=u=i; b=v=j; } } } u=find(u); v=find(v); if(uni(u,v)) { printf("%d edge (%d,%d) = %d\n",ne++,a,b,min); mincost+=min; } cost[a][b]=cost[b][a]=999; } printf("Minimum Cost = %d\n",mincost); clock_t end=clock(); printf("Execution Time = %lf\n", (double)(end- start)/CLOCKS_PER_SEC); return 0; } int find(int i) { while(parent[i]) i=parent[i]; return i; } int uni(int i,int j) { if(i!=j) { parent[j]=i; return 1; } return 0; } #include<stdio.h> dijistra 10 int main() { int n,a[20][20],i,j,min,u,v,s[10],d[10],k; printf("Enter the number of vertices: "); scanf("%d",&n); printf("Enter adjacency matrix:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&a[i][j]); } } printf("Enter source vertex: "); scanf("%d",&v); for(i=1;i<=n;i++) { s[i]=0; d[i]=a[v][i]; } d[v]=0; s[v]=1; for(k=2;k<=n;k++) { min=999; for(i=1;i<=n;i++) { if(d[i]<min && s[i]==0) { min=d[i]; u=i; } } s[u]=1; for(i=1;i<=n;i++) { if(s[i]==0) { if(d[i]>d[u]+a[u][i]) d[i]=d[u]+a[u][i]; } } } printf("\nShortest Paths:\n"); for(i=1;i<=n;i++) printf("%d --> %d = %d\n",v,i,d[i]); return 0; } #include<stdio.h> sum o f subset 11 #define MAX 10 int s[MAX],x[MAX],d; void sumofsub(int p,int k,int r) { int i; x[k]=1; if((p+s[k])==d) { for(i=1;i<=k;i++) if(x[i]==1) printf("%d ",s[i]); printf("\n"); } else if(p+s[k]+s[k+1]<=d) sumofsub(p+s[k],k+1,r-s[k]); if((p+r-s[k]>=d) && (p+s[k+1]<=d)) { x[k]=0; sumofsub(p,k+1,r-s[k]); } } int main() { int i,n,sum=0; printf("Enter n: "); scanf("%d",&n); printf("Enter the set in increasing order:\n"); for(i=1;i<=n;i++) scanf("%d",&s[i]); printf("Enter required sum: "); scanf("%d",&d); for(i=1;i<=n;i++) sum+=s[i]; if(sum<d || s[1]>d) printf("No subset possible"); else sumofsub(0,1,sum); return 0; } #include<stdio.h> #include<stdlib.h> int x[20], count=0; int place(int k,int i) { int j; for(j=1;j<k;j++) { if(x[j]==i || abs(x[j]-i)==abs(j-k)) return 0; } return 1; } void nqueen(int k,int n) { int i,j; for(i=1;i<=n;i++) { if(place(k,i)) { x[k]=i; if(k==n) { count++; printf("\nSolution %d:\n\n",count); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(x[i]==j) printf("Q\t"); else printf("-\t"); } printf("\n"); } } else { nqueen(k+1,n); } } } } int main() { int n; printf("Enter number of Queens: "); scanf("%d",&n); if(n==2 || n==3) { printf("No solution exists.\n"); } else { nqueen(1,n); if(count==0) printf("No solution exists.\n"); } return 0; }