max(int a[],int as,int b)
{
if(a[as]>a[b])return as;
else return b;
}
pqins(int a[],int lb,int ub)
{
int i=1,j,k;l
while(i!=0)
{
i=0;
int j,k;
for(j=ub;j>=lb;j--)
{
k=j/2;
if(a[k]<a[j]&&k>=lb)//Parent node should be greater than child node
{
a[k]=a[k]+a[j];
a[j]=a[k]-a[j];
a[k]=a[k]-a[j];
i++;
}
}
}
}
heapify(int a[],int lb,int ub)
{
int k=0;
while((2*k)+1<=ub)
{
int l;
l=max(a,(2*k)+1,(2*k)+2);
if(2*(k+1)>ub){l=(2*k)+1;}
a[k]=a[l];
k=l;
}
a[k]=-1;
}
main()
{
int ka;
printf("Enter the total number of numbers to be sorted\n");
scanf("%d",&ka);
int a[ka];
int l;
for(l=0;l<ka;l++)
{
printf("Enter element %d\n",l+1);
scanf("%d",&a[l]);
}
pqins(a,0,ka-1);//Function to make heap
int result[ka];
int k;
for(k=0;k<ka;k++)
{
result[k]=a[0];
heapify(a,0,ka-1);//Function to remake heap after taking the maximum element
}
printf("\nSORTED ARRAY IS \n");
int i;
for(i=0;i<ka;i++)printf("%d\n",result[i]);
}
{
if(a[as]>a[b])return as;
else return b;
}
pqins(int a[],int lb,int ub)
{
int i=1,j,k;l
while(i!=0)
{
i=0;
int j,k;
for(j=ub;j>=lb;j--)
{
k=j/2;
if(a[k]<a[j]&&k>=lb)//Parent node should be greater than child node
{
a[k]=a[k]+a[j];
a[j]=a[k]-a[j];
a[k]=a[k]-a[j];
i++;
}
}
}
}
heapify(int a[],int lb,int ub)
{
int k=0;
while((2*k)+1<=ub)
{
int l;
l=max(a,(2*k)+1,(2*k)+2);
if(2*(k+1)>ub){l=(2*k)+1;}
a[k]=a[l];
k=l;
}
a[k]=-1;
}
main()
{
int ka;
printf("Enter the total number of numbers to be sorted\n");
scanf("%d",&ka);
int a[ka];
int l;
for(l=0;l<ka;l++)
{
printf("Enter element %d\n",l+1);
scanf("%d",&a[l]);
}
pqins(a,0,ka-1);//Function to make heap
int result[ka];
int k;
for(k=0;k<ka;k++)
{
result[k]=a[0];
heapify(a,0,ka-1);//Function to remake heap after taking the maximum element
}
printf("\nSORTED ARRAY IS \n");
int i;
for(i=0;i<ka;i++)printf("%d\n",result[i]);
}
No comments:
Post a Comment