Practical 3

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

3)

i)
#include<conio.h>
#include<stdio.h>
#include<time.h>
#include<dos.h>
void counting(int a[],int n)
{
int b[100],count[50],i,max;
max=a[0];
for(i=1;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
for(i=0;i<max;i++)
{
count[i]=0;
}
for(i=0;i<n;i++)
{
count[a[i]]++;
}
for(i=1;i<=max;i++)
{
count[i]=count[i]+count[i-1];
}
for(i=n-1;i>=0;i--)
{
b[--count[a[i]]]=a[i];
}
for(i=0;i<n;i++)
{
a[i]=b[i];
}
}
void main()
{
int i,a[100],n;
struct time t1,t2;
clrscr();
printf("ET22BTIT084\n");
printf("counting Sort\n");
printf("Enter the number:");
scanf("%d",&n);
printf("Enter the values:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
gettime(&t1);
printf("\nStaring time:%d:%d:%d",t1.ti_hour,t1.ti_min,t1.ti_sec);
counting(a,n);
gettime(&t2);
printf("\nEnding time:%d:%d:%d",t2.ti_hour,t2.ti_min,t2.ti_sec);
printf("\nDifference:%d:%d:%d",t2.ti_hour-t1.ti_hour,t2.ti_min-t1.ti_min,t2.ti_sec-t1.ti_sec
);
printf("\nAfter Sorting:");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
getch();
}

Output:
ii)
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<dos.h>
int getmax(int a[],int n)
{
int max,i;
max=a[0];
for(i=1;i<n;i++)
if(a[i]>max)
max=a[i];
return max;
}
void Bucketsort(int a[],int n)
{
int max,i,j,bucket[100];
max=getmax(a,n);
for(i=0;i<=max;i++)
bucket[i]=0;
for(i=0;i<n;i++)
bucket[a[i]]++;
for(i=0,j=0;i<=max;i++)
{
while(bucket[i]>0)
{
a[j++]=i;;
bucket[i]--;
}
}
}
void Printa(int a[],int n)
{ int i;
for(i=0;i<n;i++)
printf("%d\t",a[i]);
}
void main()
{
int a[100],n,i;
struct time t1,t2;
clrscr();
printf("ET22BTIT084\n");
printf("Bucket sort!\n");
printf("Enter the total number of element:");
scanf("%d",&n);
printf("\nEnter the %d element:",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("Unsorted array is:");
Printa(a,n);
gettime(&t1);
printf("\nstarting time:%d:%d:%d",t1.ti_hour,t1.ti_min,t1.ti_sec);
Bucketsort(a,n);
gettime(&t2);
printf("\nEnding time:%d:%d:%d",t2.ti_hour,t2.ti_min,t2.ti_sec);
printf("\nDifference:%d:%d:%d",t2.ti_hour-t1.ti_hour,t2.ti_min-t2.ti_min,t2.ti_sec-t2.ti_sec
);
printf("\nUsing Bucket sort:");
printf("\nSorted Array is:");
Printa(a,n);
getch();
}

Output:
iii)
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<dos.h>
int getmax(int a[],int n)
{
int max,i;
max=a[0];
for(i=1;i<n;i++)
if(a[i]>max)
max=a[i];
return max;
}
void CountSort(int a[],int n,int place)
{
int output[100],i,count[10]={0};
for(i=0;i<n;i++)
count[(a[i]/place)%10]++;
for(i=1;i<10;i++)
count[i] += count[i-1];
for(i=n-1;i>=0;i--)
{
output[count[(a[i]/place)%10]-1]=a[i];
count[(a[i]/place)%10]--;
}
for(i=0;i<n;i++)
a[i]=output[i];
}
void RadixSort(int a[],int n)
{
int m,place;
m=getmax(a,n);
for(place=1;(m/place)>0;place*=10)
CountSort(a,n,place);
}
void printa(int a[],int n)
{ int i;
for(i=0;i<n;i++)
printf("%d\t",a[i]);
}
void main()
{
int a[100],n,i;
struct time t1,t2;
clrscr();
printf("ET22BTIt084\n");
printf("Rasix sort:!\n");
printf("Enter the total number of element:");
scanf("%d",&n);
printf("\nEnter the %d element:",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("\nUnsorted array is:");
printa(a,n);
gettime(&t1);
printf("\nStarting time:%d:%d:%d",t1.ti_hour,t1.ti_min,t1.ti_sec);
RadixSort(a,n);
gettime(&t2);
printf("\nEnding time:%d:%d:%d",t2.ti_hour,t2.ti_min,t2.ti_sec);
printf("\nDifference:%d:%d:%d",t2.ti_hour-t1.ti_hour,t2.ti_min-t1.ti_min,t2.ti_sec-t1.ti_sec
);
printf("\nUsing Radix sort:");
printf("\nSorted Array is:");
printa(a,n);
getch();
}

Output:

You might also like