Professional Documents
Culture Documents
Parth ADA Practical k
Parth ADA Practical k
CERTIFICATE
This is certified that Mr./Ms.
Computer Engineering has satisfactorily completed his work in lab for the term ending in
Date:
LIST OF PRACTICALS
8 Implementation of a knapsack 35
problem using greedy algorithm
DJMIT - CSE 1
ADA (3150703) Enrollment No.: 210820107013
Practical 1
Aim: Implementation and Time analysis of sorting algorithms. Bubble sort, Selection
sort, Insertion sort, Merge sort and Quicksort.
1. Bubble Sort
C Program:
// Bubble sort in C
#include <stdio.h>
DJMIT - CSE 2
ADA (3150703) Enrollment No.: 210820107013
}
}
}
}
// print array
int main() {
// Array implementation
int x=0;
int data[4];
for (x=0; x<4;x++)
{
printf("Enter number %d \n", (x+1));
scanf("%d", &data[x]);
}
bubbleSort(data, size);
printArray(data, size);
}
DJMIT - CSE 3
ADA (3150703) Enrollment No.: 210820107013
Output:
3459
Time Complexity
Best O(n)
Worst O(n2)
Average O(n2)
Stability Yes
DJMIT - CSE 4
ADA (3150703) Enrollment No.: 210820107013
2. Selection sort
C Program:
// Selection sort in C
#include <stdio.h>
min_idx = i;
}
swap(&array[min_idx], &array[step]);
}
}
DJMIT - CSE 5
ADA (3150703) Enrollment No.: 210820107013
}
printf("\n");
}
// driver code
int main() {
int x=0;
int data[4];
selectionSort(data, size);
printArray(data, size);
}
DJMIT - CSE 6
ADA (3150703) Enrollment No.: 210820107013
Output:
Enter number 1
5
Enter number 2
9
Enter number 3
2
Enter number 4
6
Sorted array in Ascending Order:
2569
Time Complexity
Best O(n2)
Worst O(n2)
Average O(n2)
Stability No
DJMIT - CSE 7
ADA (3150703) Enrollment No.: 210820107013
3. Insertion sort
C Program:
// Insertion sort in C
#include <stdio.h>
/* Compare key with each element on the left of it until an element smaller than it is
found. For descending order, change key<array[j] to key>array[j].*/
while (key < array[j] && j >= 0) {
array[j + 1] = array[j];
--j;
}
array[j + 1] = key;
}
}
// Driver code
int main() {
int x=0;
int data[4];
for (x=0; x<4;x++)
{
printf("Enter number %d \n", (x+1));
scanf("%d", &data[x]);
DJMIT - CSE 8
ADA (3150703) Enrollment No.: 210820107013
}
int size = sizeof(data) / sizeof(data[0]);
insertionSort(data, size);
printArray(data, size);
}
Output:
Enter number 1
6
Enter number 2
9
Enter number 3
8
Enter number 4
2
Sorted array in ascending order:
2 6 89
Time Complexity
Best O(n)
Worst O(n2)
Average O(n2)
Space Complexity O(1)
Stability Yes
DJMIT - CSE 9
ADA (3150703) Enrollment No.: 210820107013
4. Merge sort
C Program:
// Merge sort in C
#include <stdio.h>
int n1 = q - p + 1;
int n2 = r - q;
int i, j, k;
i = 0;
j = 0;
k = p;
DJMIT - CSE 10
ADA (3150703) Enrollment No.: 210820107013
}
else
{
arr[k] = M[j];
j++;
}
k++;
}
// Divide the array into two subarrays, sort them and merge them
int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
DJMIT - CSE 11
ADA (3150703) Enrollment No.: 210820107013
merge(arr, l, m, r);
}
}
// Driver program
int main() {
int x=0;
int arr[4];
printArray(arr, size);
}
DJMIT - CSE 12
ADA (3150703) Enrollment No.: 210820107013
Output:
Enter number 1
5
Enter number 2
9
Enter number 3
3
Enter number 4
1
Sorted array:
1359
Time Complexity
Best O(n*log n)
Worst O(n*log n)
Average O(n*log n)
Stability Yes
DJMIT - CSE 13
ADA (3150703) Enrollment No.: 210820107013
5. Quicksort
C Program:
// Quick sort in C
#include <stdio.h>
DJMIT - CSE 14
ADA (3150703) Enrollment No.: 210820107013
// main function
int main() {
int x=0;
int data[4];
for (x=0; x<4;x++)
{
printf("Enter number %d \n", (x+1));
scanf("%d", &data[x]);
}
DJMIT - CSE 15
ADA (3150703) Enrollment No.: 210820107013
Output:
Enter number 1
5
Enter number 2
4
Enter number 3
2
Enter number 4
9
Unsorted Array
5 4 29
Sorted array in ascending order:
2 4 59
Quicksort Complexity:
Time Complexity
Best O(n*log n)
Worst O(n2)
Average O(n*log n)
Space Complexity O(log n)
Stability No
DJMIT - CSE 16
ADA (3150703) Enrollment No.: 210820107013
Practical: 2
Aim: Implementation and Time analysis of linear and binary search algorithm.
1. Linear Search
C Program:
#include <stdio.h>
int main()
{
int array[100], search, c, n;
return 0;
}
DJMIT - CSE 17
ADA (3150703) Enrollment No.: 210820107013
Output:
Time Analysis:
DJMIT - CSE 18
ADA (3150703) Enrollment No.: 210820107013
2. Binary search
C Program:
// Binary Search in C
#include <stdio.h>
if (array[mid] == find)
return mid;
int main(void) {
int x=0;
int size;
printf("Enter size of Array: \n");
scanf("%d", &size);
int array[size];
for (x=0; x<size;x++)
{
printf("Enter number %d \n", (x+1));
scanf("%d", &array[x]);
}
int n = sizeof(array) / sizeof(array[0]);
DJMIT - CSE 19
ADA (3150703) Enrollment No.: 210820107013
int find;
printf("Enter number to find: \n");
scanf("%d", &find);
int result = binarySearch(array, find, 0, n - 1);
if (result == -1)
printf("Not found");
else
printf("Element is found at index %d", result);
return 0;
}
Output:
Time Analysis:
DJMIT - CSE 20
ADA (3150703) Enrollment No.: 210820107013
Practical: 3
C Program:
// Heap Sort in C
#include <stdio.h>
*a = *b;
*b = temp;
}
// left = 2*i + 1
int left = 2 * i + 1;
// right = 2*i + 2
int right = 2 * i + 2;
DJMIT - CSE 21
ADA (3150703) Enrollment No.: 210820107013
largest = left;
largest = right;
if (largest != i) {
swap(&arr[i], &arr[largest]);
heapify(arr, N, largest);
}
}
heapify(arr, N, i);
// Heap sort
for (int i = N - 1; i >= 0; i--) {
swap(&arr[0], &arr[i]);
DJMIT - CSE 22
ADA (3150703) Enrollment No.: 210820107013
heapify(arr, i, 0);
}
}
// Driver's code
int main()
{
int x=0;
int size;
printf("Enter size of Array: \n");
scanf("%d", &size);
int arr[size];
for (x=0; x<size;x++)
{
printf("Enter number %d \n", (x+1));
scanf("%d", &arr[x]);
}
// Function call
heapSort(arr, N);
printf("Sorted array is\n");
printArray(arr, N);
DJMIT - CSE 23
ADA (3150703) Enrollment No.: 210820107013
Output:
Time Complexity
Best O(nlog n)
Worst O(nlog n)
Average O(nlog n)
Space Complexity O(1)
Stability No
DJMIT - CSE 24
ADA (3150703) Enrollment No.: 210820107013
Practical: 4
Aim: Implementation and Time analysis of factorial program using iterative and
recursive method
1. Recursive method
#include<stdio.h>
long int fact(int n);
long int Ifact(int n);
int main( )
{
int num;
printf("Enter a number : ");
scanf("%d", &num);
if(num<0)
printf("No factorial for negative number\n");
else
printf("Factorial of %d is %ld\n", num, Ifact(num) );
return 0;
DJMIT - CSE 25
ADA (3150703) Enrollment No.: 210820107013
}/*End of main()*/
/*Recursive*/
long int fact(int n)
{
if(n == 0)
return(1);
return(n * fact(n-1));
}/*End of fact()*/
/*Iterative*/
long int Ifact(int n)
{
long fact=1;
while(n>0)
{
fact = fact*n;
n--;
}
return fact;
}/*End of ifact()*/
Output:
Enter a number : 5
Using Recursion ::
Factorial of 5 is 120
Using Iterative ::
Factorial of 5 is 120
DJMIT - CSE 26
ADA (3150703) Enrollment No.: 210820107013
Practical: 5
C Program:
#include <stdio.h>
#include <stdlib.h>
int W, n;
void main()
{
int w, i, l = 0, p, j;
printf("Enter number of objects \n");
scanf("%d", &n);
printf("Enter maximum weight, knapsack can carry \n");
scanf("%d", &W);
int k[n + 1][W + 1], a[W], v[W], ks[W];
printf("Enter weights of objects \n");
a[0] = 0;
for (i = 1; i < n + 1; i++)
{
printf("w[%d] = ", i);
scanf("%d", &a[i]);
}
printf("Enter profits/values of objects \n");
v[0] = 0;
for (i = 1; i < n + 1; i++)
{
printf("p[%d] = ", i);
scanf("%d", &v[i]);
}
k[0][0] = 0;
for (w = 1; w <= W; w++)
k[0][w] = 0;
for (i = 1; i <= n + 1; i++)
k[i][0] = 0;
for (i = 1; i <= n; i++)
DJMIT - CSE 27
ADA (3150703) Enrollment No.: 210820107013
{
for (w = 1; w <= W; w++)
{
if (a[i] <= w)
{
if (v[i] + k[i - 1][w - a[i]] > k[i - 1][w])
{
k[i][w] = v[i] + k[i - 1][w - a[i]];
}
else
{
k[i][w] = k[i - 1][w];
}
}
else
{
k[i][w] = k[i - 1][w];
}
}
}
printf("\n\nP W i \t0 ");
for (i = 1; i <= W; i++)
{
printf("%d ", i);
}
printf("\n \n");
for (i = 0; i < n + 1; i++)
{
printf("%d %d %d |\t", v[i], a[i], i);
for (j = 0; j <= W; j++)
{
printf("%d ", k[i][j]);
}
printf("\n");
}
i = n;
p = W;
int u = 0, x = 0;
while (i >= 0 && p >= 0)
{
DJMIT - CSE 28
ADA (3150703) Enrollment No.: 210820107013
ks[++l] = '\0';
l = 1;
printf("\nThe individual weights are ");
while (ks[l] != '\0')
{
printf("%d ", ks[l]);
l++;
}
printf("\n\nTotal weight to be carried in knapsack is %d \n\n", u);
printf("Total profit in knapsack is %d \n\n", x);
}
Output:
DJMIT - CSE 29
ADA (3150703) Enrollment No.: 210820107013
p[3] = 3
p[4] = 4
p[5] = 1
PWi 0 1 2 3 4 5 6 7 8 9 10
0 00| 0 0 0 0 0 0 0 0 0 0 0
5 21| 0 0 5 5 5 5 5 5 5 5 5
2 62| 0 0 5 5 5 5 5 5 7 7 7
3 53| 0 0 5 5 5 5 5 8 8 8 8
4 94| 0 0 5 5 5 5 5 8 8 8 8
1 35| 0 0 5 5 5 6 6 8 8 8 9
DJMIT - CSE 30
ADA (3150703) Enrollment No.: 210820107013
Practical: 6
C Program:
#include <limits.h>
#include <stdio.h>
DJMIT - CSE 31
ADA (3150703) Enrollment No.: 210820107013
{
int arr[] = { 1, 2, 3, 4, 3 };
int n = sizeof(arr) / sizeof(arr[0]);
getchar();
return 0;
}
Output:
DJMIT - CSE 32
ADA (3150703) Enrollment No.: 210820107013
Practical: 7
C Program:
// total count
table[i][j] = x + y;
}
}
DJMIT - CSE 33
ADA (3150703) Enrollment No.: 210820107013
Output:
4
...Program finished with exit code 0
Press ENTER to exit console.
DJMIT - CSE 34
ADA (3150703) Enrollment No.: 210820107013
Practical: 8
C Program:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n, i, j;
printf("Enter maximum weight of knapsack ");
scanf("%d", &m);
printf("\nEnter number of objects ");
scanf("%d", &n);
int wt = 0, k = 0;
float cal[n], p[n], w[n], x[n], prof = 0;
for (i = 0; i < n; i++)
x[i] = 0;
printf("\nEnter weights\n");
for (i = 0; i < n; i++)
{
printf("w[%d] = ", i);
scanf("%f", &w[i]);
}
printf("\nEnter profits\n");
for (i = 0; i < n; i++)
{
printf("p[%d] = ", i);
scanf("%f", &p[i]);
}
for (i = 0; i < n; i++)
cal[i] = p[i] / w[i];
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
DJMIT - CSE 35
ADA (3150703) Enrollment No.: 210820107013
DJMIT - CSE 36
ADA (3150703) Enrollment No.: 210820107013
Output:
Enter weights
w[0] = 10
w[1] = 5
w[2] = 15
p[0] = 5
p[1] = 2
p[2] = 10
p[i] w[i]
5.000000 0.400000
i w[i] p[i]
1 15.000000 10.000000
2 5.000000 2.000000
3 10.000000 5.000000
DJMIT - CSE 37
ADA (3150703) Enrollment No.: 210820107013
Practical: 9
C Program:
#include<stdio.h>
int q[20],top=-1,front=-1,rear=-1,a[20][20],vis[20],stack[20];
int delete();
void add(int item);
void bfs(int s,int n);
void dfs(int s,int n);
void push(int item);
int pop();
void main()
{
int n,i,s,ch,j;
char c,dummy;
printf("ENTER THE NUMBER VERTICES ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("ENTER 1 IF %d HAS A NODE WITH %d ELSE 0 ",i,j);
scanf("%d",&a[i][j]);
}
}
printf("THE ADJACENCY MATRIX IS\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf(" %d",a[i][j]);
}
printf("\n");
DJMIT - CSE 38
ADA (3150703) Enrollment No.: 210820107013
do
{
for(i=1;i<=n;i++)
vis[i]=0;
printf("\nMENU");
printf("\n1.B.F.S");
printf("\n2.D.F.S");
printf("\nENTER YOUR CHOICE");
scanf("%d",&ch);
printf("ENTER THE SOURCE VERTEX :");
scanf("%d",&s);
switch(ch)
{
case 1:bfs(s,n);
break;
case 2:
dfs(s,n);
break;
}
printf("DO U WANT TO CONTINUE(Y/N) ? ");
scanf("%c",&dummy);
scanf("%c",&c);
}while((c=='y')||(c=='Y'));
}
DJMIT - CSE 39
ADA (3150703) Enrollment No.: 210820107013
for(i=1;i<=n;i++)
if((a[p][i]!=0)&&(vis[i]==0))
{
add(i);
vis[i]=1;
}
p=delete();
if(p!=0)
printf(" %d ",p);
}
for(i=1;i<=n;i++)
if(vis[i]==0)
bfs(i,n);
}
DJMIT - CSE 40
ADA (3150703) Enrollment No.: 210820107013
}
}
DJMIT - CSE 41
ADA (3150703) Enrollment No.: 210820107013
return(0);
else
{
k=stack[top--];
return(k);
}
}
Output:
ENTER THE NUMBER VERTICES 3
ENTER 1 IF 1 HAS A NODE WITH 1 ELSE 0 1
ENTER 1 IF 1 HAS A NODE WITH 2 ELSE 0 1
ENTER 1 IF 1 HAS A NODE WITH 3 ELSE 0 0
ENTER 1 IF 2 HAS A NODE WITH 1 ELSE 0 1
ENTER 1 IF 2 HAS A NODE WITH 2 ELSE 0 0
ENTER 1 IF 2 HAS A NODE WITH 3 ELSE 0 1
ENTER 1 IF 3 HAS A NODE WITH 1 ELSE 0 0
ENTER 1 IF 3 HAS A NODE WITH 2 ELSE 0 1
ENTER 1 IF 3 HAS A NODE WITH 3 ELSE 0 1
THE ADJACENCY MATRIX IS
110
101
011
MENU
1.B.F.S
2.D.F.S
ENTER YOUR CHOICE1
ENTER THE SOURCE VERTEX :2
2 1 3 DO U WANT TO CONTINUE(Y/N) ? y
MENU
1.B.F.S
2.D.F.S
ENTER YOUR CHOICE2
ENTER THE SOURCE VERTEX :2
2 3 1 DO U WANT TO CONTINUE(Y/N) ?
DJMIT - CSE 42
ADA (3150703) Enrollment No.: 210820107013
Practical: 10
C Program:
#include<stdio.h>
#include<conio.h>
int a,b,u,v,n,i,j,ne=1;
int visited[10]={0},min,mincost=0,cost[10][10];
int main() {
printf("\nEnter the number of nodes:");
scanf("%d",&n);
printf("\nEnter the 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;
}
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;
DJMIT - CSE 43
ADA (3150703) Enrollment No.: 210820107013
b=v=j;
}
if(visited[u]==0 || visited[v]==0) {
Output:
Edge 1: (1 2) cost:2
Edge 1: (1 3) cost:3
Minimum cost: 5
DJMIT - CSE 44
ADA (3150703) Enrollment No.: 210820107013
Practical: 11
C Program:
// Kruskal's algorithm in C
#include <stdio.h>
#define MAX 30
edge_list elist;
int Graph[MAX][MAX], n;
edge_list spanlist;
void kruskalAlgo();
int find(int belongs[], int vertexno);
void applyUnion(int belongs[], int c1, int c2);
void sort();
void print();
DJMIT - CSE 45
ADA (3150703) Enrollment No.: 210820107013
if (Graph[i][j] != 0) {
elist.data[elist.n].u = i;
elist.data[elist.n].v = j;
elist.data[elist.n].w = Graph[i][j];
elist.n++;
}
}
sort();
spanlist.n = 0;
if (cno1 != cno2) {
spanlist.data[spanlist.n] = elist.data[i];
spanlist.n = spanlist.n + 1;
applyUnion(belongs, cno1, cno2);
}
}
}
// Sorting algo
void sort() {
DJMIT - CSE 46
ADA (3150703) Enrollment No.: 210820107013
int i, j;
edge temp;
int main() {
int i, j, total_cost;
n = 6;
Graph[0][0] = 0;
Graph[0][1] = 4;
Graph[0][2] = 4;
Graph[0][3] = 0;
Graph[0][4] = 0;
Graph[0][5] = 0;
Graph[0][6] = 0;
Graph[1][0] = 4;
Graph[1][1] = 0;
Graph[1][2] = 2;
DJMIT - CSE 47
ADA (3150703) Enrollment No.: 210820107013
Graph[1][3] = 0;
Graph[1][4] = 0;
Graph[1][5] = 0;
Graph[1][6] = 0;
Graph[2][0] = 4;
Graph[2][1] = 2;
Graph[2][2] = 0;
Graph[2][3] = 3;
Graph[2][4] = 4;
Graph[2][5] = 0;
Graph[2][6] = 0;
Graph[3][0] = 0;
Graph[3][1] = 0;
Graph[3][2] = 3;
Graph[3][3] = 0;
Graph[3][4] = 3;
Graph[3][5] = 0;
Graph[3][6] = 0;
Graph[4][0] = 0;
Graph[4][1] = 0;
Graph[4][2] = 4;
Graph[4][3] = 3;
Graph[4][4] = 0;
Graph[4][5] = 0;
Graph[4][6] = 0;
Graph[5][0] = 0;
Graph[5][1] = 0;
Graph[5][2] = 2;
Graph[5][3] = 0;
Graph[5][4] = 3;
Graph[5][5] = 0;
Graph[5][6] = 0;
kruskalAlgo();
print();
}
DJMIT - CSE 48
ADA (3150703) Enrollment No.: 210820107013
Output:
2-1:2
5-2:2
3-2:3
4-3:3
1-0:4
Spanning tree cost: 14
DJMIT - CSE 49
ADA (3150703) Enrollment No.: 210820107013
Practical: 12
C Program:
#include <stdio.h>
void lcs(int arr[][10], char ar[], int, int);
int l, k;
void main()
{
char s1[10], s2[10];
int i, j;
printf("\nEnter the strings\nX = ");
s1[0] = 0;
char ch = getchar();
while (ch != '\n')
{
s1[++l] = ch;
ch = getchar();
}
printf("Y = ");
s2[0] = 0;
char c1 = getchar();
while (c1 != '\n')
{
s2[++k] = c1;
c1 = getchar();
}
DJMIT - CSE 50
ADA (3150703) Enrollment No.: 210820107013
printf("\n\n\t");
for (i = 1; i < k + 1; i++)
{
printf("\t %c", s2[i]);
}
printf("\n");
for (i = 0; i < l + 1; i++)
{
printf("%c\t", s1[i]);
for (j = 0; j < k + 1; j++)
{
printf("%d(%d)\t", c[i][j], b[i][j]);
}
printf("\n");
}
printf("\n\n");
printf("Longest common substring of X and Y is ");
DJMIT - CSE 51
ADA (3150703) Enrollment No.: 210820107013
Output:
D F B A
0(0) 0(0) 0(0) 0(0) 0(0)
0(0) 0(2) 0(2) 0(2) 1(1)
B 0(0) 0(2) 0(2) 1(1) 1(2)
D 0(0) 1(1) 1(3) 1(2) 1(2)
F 0(0) 1(2) 2(1) 2(3) 2(3)
DJMIT - CSE 52