Heap Sort program in C

Previous
Next
#include<stdio.h>
void HeapTree(int[] , int);
void deleteMax(int[] , int , int);
int main()
{
	int list[50], n, i, j ;
	printf("Enter number of elements : ");
	scanf("%d", &n);

	for(i=1 ; i<=n ; i++)
	{
		list[i] = rand()%32767 ;
    }

    printf("list of elements before sort : \n");
    for( i=1 ; i<=n ; i++ )
    {
		printf("%d\t", list[i]);
    }
   	printf("\n\n");

	for(i=1 ; i<=n ; i++)
	{
		HeapTree(list, i);
	}

	j=n;
	for(i=1 ; i<=j ; i++)
	{
		int temp;
		temp=list[1];
		list[1]=list[n];
		list[n]=temp;
		n--;
		deleteMax(list,1,n);
	}
	n=j;

	printf("list of elements after sort : \n");
	for(i=1 ; i<=n ; i++ )
	{
		printf("%d\t",list[i]);
	}
	printf("\n\n");
	return 0;
}

void HeapTree(int a[] , int i)
{
        int v=a[i];

        while((i>1)&&(a[i/2]<v))
        {
                a[i]=a[i/2];
                i=i/2;
        }
        a[i]=v;
}
void deleteMax(int a[], int i, int n)
{
        int v=a[i];
        int j=i*2;
        while(j<=n)
        {
                if((j<n)&&(a[j]<a[j+1]))
                        j++;
                if(a[j]<a[j/2]) 
                       break;

                a[j/2]=a[j];
                j=j*2;
        }
        a[j/2]=v;
}
Previous
Next

Add Comment

Courses Enquiry Form