/*Program to demonstrate the heap sort algorithm to sort an array using max heap*/ #include #include main() { int a[100],n,i,lb,ub; void swap(int*,int*); void heapsort(int[],int,int); printf("Enter number of elements:"); scanf("%d",&n); lb=0; ub=n-1; printf("Enter the elements:\n"); for(i=0;i=lb) { del_heap(a,i+1,lb,ub); i--; } } void create_heap(int a[],int heapsize,int data,int lb,int ub) { int i,p; int parent(int); i=lb+heapsize; a[i]=data; while(i>lb&&a[p=parent(i)]=heapsize) break; if((r=right(i))>=heapsize) max_child=l; else max_child=(a[l]>a[r])?l:r; if(a[i]>=a[max_child]) break; swap(&a[i],&a[max_child]); i=max_child; } } int parent(int i) { float p; p=((float)i/2.0)-1.0; return ceil(p); } int left(int i) { return 2*i+1; } int right(int i) { return 2*i+2; }