You are on page 1of 25

Founded 1991 by Md.

Alimullah Miyan

Project on
Program on Different Algorithm by C/C++/Java

Data Structure and Algorithms

SUBMITTED TO

Md. Shafenoor Amin


Faculty Member, the Department of Computer Science and Engineering

SUBMITTED BY
NAME
ID
PROGRAM
SUBJECT
SUBJECT CODE
SECTION

: Md. Nurul Kabir


: 12303012
: BCSE
: Data Structure and Algorithms
: CSC 391
: Evening

DATE OF SUBMISSION: 13th April 2015

April 13, 2015


To
Md. Shafenoor Amin
Lecturer
College of Engineering and Technology (CEAT)
Department of Computer Science & Engineering.
IUBAT-International University of Business Agriculture & Technology
4Embankment Drive Road, Sector-10, Uttara Model Town, Dhaka-1230, Bangladesh
Subject: Submitting a project on Program on Different Algorithm by C/C++/Java

Dear Sir,
I have selected Program on Different Algorithm by C as my project. I pleased to
propose Language C to you for my project. By this project I can show my efficiency of
technical work effectively.
For your kind consideration I inform you that I am trying my best to prepare the project. I
have immense pleasure to have the study on this which is effective in our practical field
as well as our study sector. It was great opportunities for me to work on this project
actualize my theoretical knowledge in the practical area.

I express my heart full gratitude to you to through this project and make your valuable
comments. It would be very kind of you, if you please evaluate my performance
regarding this project.

Program on Different Algorithm by C

Sincerely

Md. Nurul Kabir


ID#12303012

Project |CSC 391 |MSA

Bubble sort
#include <stdio.h>
int main()
{
int kabir[100], n, c, d, swap;
printf("Please Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d", & kabir[c]);
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (kabir [d] > kabir [d+1])
{
swap

= kabir [d];

Program on Different Algorithm by C

kabir [d] = kabir [d+1];


kabir [d+1] = swap;
}
}
}
printf(" All Sorted list are:\n");

for ( c = 0 ; c < n ; c++ )

Project |CSC 391 |MSA

printf("%d\n", kabir[c]);

return 0;
}

Insertion sort

#include <stdio.h>
int main()
{
int n, kabir[1000], c, d, t;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++) {
scanf("%d", & kabir [c]);
}

Program on Different Algorithm by C

for (c = 1 ; c <= n - 1; c++) {


d = c;
while ( d > 0 && kabir [d] < kabir [d-1]) {
t

= kabir [d];

kabir [d] = kabir [d-1];


kabir [d-1] = t;
d--;
}
Project |CSC 391 |MSA

}
printf("Sorted list in ascending order:\n");
for (c = 0; c <= n - 1; c++) {
printf("%d\n", kabir [c]);
}
return 0;
}

Selection sort

#include <stdio.h>
int main()
{
int kabir[100], n, c, d, pos, swap;
printf("Enter number of elements\n");

Program on Different Algorithm by C

scanf("%d", &n);
printf("Enter %d integers\n", n);
for ( c = 0 ; c < n ; c++ )
scanf("%d", & kabir [c]);
for ( c = 0 ; c < ( n - 1 ) ; c++ )
{
pos = c;

Project |CSC 391 |MSA

for ( d = c + 1 ; d < n ; d++ )


{
if (kabir [pos] > kabir [d] )
pos = d;
}
if (pos!= c )
{
swap = kabir [c];
kabir [c] = kabir [pos];
kabir [pos] = swap;
}
}
printf("Sorted list are:\n");
for ( c = 0 ; c < n ; c++ )
printf("%d\n", kabir [c]);
return 0;

Program on Different Algorithm by C

Project |CSC 391 |MSA

Marge Sort

#include<stdio.h>
#include<conio.h>
void merge(int [],int ,int ,int );
void part(int [],int ,int );
int main()
{
int kabir[30];
int i,size;
printf("Enter number of elements : ");
scanf("%d",&size);
for(i=0; i<size; i++)
{
printf("Enter %d element : ",i+1);
scanf("%d",& kabir [i]);
}

Program on Different Algorithm by C

part(kabir,0,size-1);
printf("\n Sorted elements are\n\n");
for(i=0; i<size; i++)
printf("%d ", kabir [i]);
getch();
return 0;
}

Project |CSC 391 |MSA

void part(int kabir[],int min,int max)


{
int mid;
if(min<max)
{
mid=(min+max)/2;
part(kabir,min,mid);
part(kabir,mid+1,max);
merge(kabir,min,mid,max);
}
}
void merge(int kabir [],int min,int mid,int max)
{
int tmp[30];
int i,j,k,m;
j=min;
m=mid+1;
for(i=min; j<=mid && m<=max ; i++)
Program on Different Algorithm by C

{
if(kabir [j]<= kabir [m])
{
tmp[i]= kabir [j];
j++;
}
else

Project |CSC 391 |MSA

{
tmp[i]= kabir [m];
m++;
}
}
if(j>mid)
{
for(k=m; k<=max; k++)
{
tmp[i]= kabir[k];
i++;
}
}
else
{
for(k=j; k<=mid; k++)
{
tmp[i]= kabir[k];
Program on Different Algorithm by C

i++;
}
}
for(k=min; k<=max; k++)
kabir [k]=tmp[k];
}

Project |CSC 391 |MSA

Quick

#include<stdio.h>
#include<conio.h>
void qsort(int kabir[20], int fst, int last);
int main()
{
int kabir [30];
int i,size;
printf("Enter number of the elements : ");
scanf("%d",&size);
for(i=0; i<size; i++)
scanf("%d",& kabir [i]);
qsort(kabir,0,size-1);
printf("Quick sorted elements are as : \n");
for(i=0; i<size; i++)

Program on Different Algorithm by C

printf("%d\t", kabir[i]);
getch();
return 0;
}
void qsort(int kabir[20], int fst, int last)
{
int i,j,pivot,tmp;
if(fst<last)
{
Project |CSC 391 |MSA

1
0

pivot=fst;
i=fst;
j=last;
while(i<j)
{
while(kabir [i]<= kabir [pivot] && i<last)
i++;
while(kabir [j]> kabir [pivot])
j--;
if(i<j)
{
tmp= kabir [i];
kabir [i]= kabir [j];
kabir [j]=tmp;
}
}
tmp= kabir [pivot];
Program on Different Algorithm by C

kabir [pivot]= kabir [j];


kabir [j]=tmp;
qsort(kabir,fst,j-1);
qsort(kabir,j+1,last);
}
}

Project |CSC 391 |MSA

1
1

Bucket Sort
#include <stdio.h>
void Bucket_Sort(int nurul[], int n)
{
int i, j;
int count[n];
for (i = 0; i < n; i++)
count[i] = 0;

for (i = 0; i < n; i++)


(count[nurul [i]])++;

for (i = 0, j = 0; i < n; i++)


for(; count[i] > 0; (count[i])--)
nurul [j++] = i;
}

Program on Different Algorithm by C

int main()
{
int nurul [100], i, num;

printf("Please Enter the size of array : ");


scanf("%d", &num);
for (i = 0; i < num; i++)
scanf("%d", & nurul [i]);
printf("\nThe array of elements after sorting : \n");

Project |CSC 391 |MSA

1
2

Bucket_Sort(nurul, num);
for (i = 0; i < num; i++)
printf("%d ", nurul [i]);
printf("\n");
return 0;
}

Radix sort

#include<stdio.h>
#include<conio.h>
int radix_sort(int kabir[], int n);
void main()
{
int kabir [100],n,i;
printf("Enter the number of elements: ");

Program on Different Algorithm by C

scanf("%d",&n);
printf("\nEnter the elements \n");
for(i = 0 ; i < n ; i++ )
{
scanf("%d",& kabir [i]);
}
printf("\n");
radix_sort(kabir,n);
printf("\nArray After Radix Sort: ");

Project |CSC 391 |MSA

1
3

for(i = 0; i < n; i++)


{
printf("%8d", kabir [i]);
}
printf("\n");
getch();
}
radix_sort(int kabir[], int n)
{
int bucket[10][5],buck[10],b[10];
int i,j,k,l,num,div,large,passes;
div=1;
num=0;
large= kabir [0];
for(i=0 ; i<n ; i++)
{
if(kabir [i] > large)
Program on Different Algorithm by C

{
large = kabir [i];
}
while(large > 0)
{
num++;
large = large/10;
}

Project |CSC 391 |MSA

1
4

for(passes=0 ; passes<num ; passes++)


{
for(k=0 ; k<10 ; k++)
{
buck[k] = 0;
}
for(i=0 ; i<n ;i++)
{
l = ((kabir [i]/div)%10);
bucket[l][buck[l]++] = kabir[i];
}
i=0;
for(k=0 ; k<10 ; k++)
{
for(j=0 ; j<buck[k] ; j++)
{
kabir[i++] = bucket[k][j];
Program on Different Algorithm by C

}
}
div*=10;
}
}
}

Project |CSC 391 |MSA

1
5

Linear Search
#include <stdio.h>
int main()
{
int kabir[100], search, c, n;
printf("Enter the number of elements \n");
scanf("%d",&n);
printf("Enter %d integer(s)\n", n);
for (c = 0; c < n; c++)
scanf("%d", & kabir [c]);
printf("Enter the number to search\n");
scanf("%d", &search);
for (c = 0; c < n; c++)
{
if (kabir [c] == search)
{

Program on Different Algorithm by C

printf("%d is present at location %d.\n", search, c+1);


break;
}
}
if (c == n)
printf("%d is not present in array.\n", search);

return 0;
}

Project |CSC 391 |MSA

1
6

Binary Search

#include <stdio.h>
int main()
{
int c, first, last, middle, n, search, kabir[100];
printf("Enter number of elements\n");
scanf("%d",&n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d",& kabir [c]);
printf("Enter value to find\n");
scanf("%d", &search);
first = 0;
last = n - 1;

Program on Different Algorithm by C

middle = (first+last)/2;
while (first <= last) {
if (kabir[middle] < search)
first = middle + 1;
else if (kabir [middle] == search) {
printf("%d found at location %d.\n", search, middle+1);
break;
}
else

Project |CSC 391 |MSA

1
7

last = middle - 1;
middle = (first + last)/2;
}
if (first > last)
printf("Not found! %d is not present in the list.\n", search);
return 0;
}

Depth First Search (DFS)


#include<stdio.h>
#include<conio.h>
int nurul[20][20],reach[20],n;
void dfs(int v)
{
int i;

Program on Different Algorithm by C

reach[v]=1;
for(i=1;i<=n;i++)
if(nurul [v][i] && !reach[i])
{
printf("\n %d->%d",v,i);
dfs(i);
}
}
void main()

Project |CSC 391 |MSA

1
8

{
int i,j,count=0;
printf("\n Enter number of vertices:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
reach[i]=0;
for(j=1;j<=n;j++)
nurul [i][j]=0;
}
printf("\n Enter the adjacency matrix:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&nurul[i][j]);
dfs(1);
printf("\n");
for(i=1;i<=n;i++) {
Program on Different Algorithm by C

if(reach[i])
count++;
}
if(count==n)
printf("\n Graph is connected");
else
printf("\n Graph is not connected");
}

Project |CSC 391 |MSA

1
9

Breadth First Search (BFS)


#include<stdio.h>
#include<conio.h>
int kabir[20][20],q[20],visited[20],n,i,j,f=0,r=-1;
void bfs(int v)
{
for(i=1;i<=n;i++)
if(kabir[v][i] && !visited[i])
q[++r]=i;
if(f<=r)
{
visited[q[f]]=1;
bfs(q[f++]);
}
}
void main()

Program on Different Algorithm by C

{
int v;
printf("\n Enter the number of vertices:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
q[i]=0;
visited[i]=0;
}

Project |CSC 391 |MSA

2
0

printf("\n Enter graph data in matrix form:\n");


for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&kabir[i][j]);
printf("\n Enter the starting vertex:");
scanf("%d",&v);
bfs(v);
printf("\n The node which are reachable are:\n");
for(i=1;i<=n;i++)
if(visited[i])
printf("%d\t",i);
else
printf("\n Bfs is not possible");
getch();
}

Program on Different Algorithm by C

warshall

#include<stdio.h>
#include<conio.h>
#include<math.h>
int max(int,int);
void warshal(int p[10][10],int n)
{
int i,j,k;

Project |CSC 391 |MSA

2
1

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 max(int a,int b)
{

if(a>b)
return(a);
else
return(b);
}
void main()
{
int p [10][10]={0},n,e,u,v,i,j;
printf("\n Enter the number of vertices:");
scanf("%d",&n);
Program on Different Algorithm by C

printf("\n Enter the number of edges:");


scanf("%d",&e);
for(i=1;i<=e;i++)
{
printf("\n Enter the end vertices of edge %d:",i);
scanf("%d%d",&u,&v);
p[u][v]=1;
}

Project |CSC 391 |MSA

2
2

printf("\n Matrix of input data: \n");


for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d\t", p[i][j]);
printf("\n");
}
warshal(p,n);
printf("\n Transitive closure: \n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d\t", p[i][j]);
printf("\n");
}
getch();

Program on Different Algorithm by C

Dijkstra

#include "stdio.h"
#include "conio.h"
#define infinity 999
void dij(int n,int v,int cost[10][10],int dist[])
{

Project |CSC 391 |MSA

2
3

int i,u,count,w,flag[10],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++)
if(dist[w]<min && !flag[w])
min=dist[w],u=w;
flag[u]=1;
count++;
for(w=1;w<=n;w++)
if((dist[u]+cost[u][w]<dist[w]) && !flag[w])
dist[w]=dist[u]+cost[u][w];
}
}
Program on Different Algorithm by C

void main()
{
int n,v,i,j,cost[10][10],dist[10];
printf("\n Enter the number of nodes:");
scanf("%d",&n);
printf("\n Enter the cost matrix:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)

Project |CSC 391 |MSA

2
4

{
scanf("%d",&cost[i][j]);
if(cost[i][j]==0)
cost[i][j]=infinity;
}
printf("\n Enter the source matrix:");
scanf("%d",&v);
dij(n,v,cost,dist);
printf("\n Shortest path:\n");
for(i=1;i<=n;i++)
if(i!=v)
printf("%d->%d,cost=%d\n",v,i,dist[i]);
getch();

Program on Different Algorithm by C

Project |CSC 391 |MSA

2
5

You might also like