#include void max_heapify(int *a, int i, int n); void heapsort(int *a, int n); void build_maxheap(int *a, int n); void max_heapify(int *a, int i, int n) { int j, temp; temp = a[i]; j = 2 * i; while (j <= n) { if (j < n && a[j + 1] > a[j]) j = j + 1; if (temp > a[j]) { break; } else if (temp <= a[j]) { a[j / 2] = a[j]; j = 2 * j; } } a[j / 2] = temp; return; } void heapsort(int *a, int n) { int i, temp; for (i = n; i >= 2; i--) { temp = a[i]; a[i] = a[1]; a[1] = temp; max_heapify(a, 1, i - 1); } } void build_maxheap(int *a, int n) { int i; for (i = n / 2; i >= 1; i--) { max_heapify(a, i, n); } } int main() { int n, i; printf("Enter number of elements of array\n"); scanf("%d", &n); int a[20]; for (i = 1; i <= n; i++) { printf("Enter Element %d\n", i); scanf("%d", a + i); } build_maxheap(a, n); heapsort(a, n); printf("Sorted Output\n"); for (i = 1; i <= n; i++) { printf("%d\n", a[i]); } getchar(); }