sort c program
DESCRIPTION
AlgorithmTRANSCRIPT
Founded 1991 by Md. Alimullah Miyan
Project on
Program on Different Algorithm by C/C++/Java
Data Structure and Algorithms
SUBMITTED BY
NAME : Md. Nurul Kabir
ID : 12303012
PROGRAM : BCSE
SUBJECT : Data Structure and Algorithms
SUBJECT CODE : CSC 391
SECTION : Evening
DATE OF SUBMISSION: 13th
April 2015
SUBMITTED TO
Md. Shafenoor Amin Faculty Member, the Department of Computer Science and Engineering
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
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.
Sincerely
…………………………
Md. Nurul Kabir
ID#12303012
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
3
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];
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
4
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]);
}
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
5
}
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");
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
6
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;
}
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
7
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]);
}
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
8
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++)
{
if(kabir [j]<= kabir [m])
{
tmp[i]= kabir [j];
j++;
}
else
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
9
{
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];
i++;
}
}
for(k=min; k<=max; k++)
kabir [k]=tmp[k];
}
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
0
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++)
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
1
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];
kabir [pivot]= kabir [j];
kabir [j]=tmp;
qsort(kabir,fst,j-1);
qsort(kabir,j+1,last);
}
}
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
2
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;
}
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
3
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: ");
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
4
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)
{
large = kabir [i];
}
while(large > 0)
{
num++;
large = large/10;
}
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
5
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];
}
}
div*=10;
}
}
}
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
6
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)
{
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
7
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;
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
8
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;
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
1
9
{
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++) {
if(reach[i])
count++;
}
if(count==n)
printf("\n Graph is connected");
else
printf("\n Graph is not connected");
}
Project |CSC 391 |MSA
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
0
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()
{
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
1
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();
}
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
2
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);
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
3
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();
}
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
4
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];
}
}
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
Pro
gra
m o
n D
iffe
ren
t A
lgo
rith
m b
y C
2
5
{
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();
}