This is a C Program which sorts all the elements using Heap Sort technique.
Look at this animation below ,
"Heapsort-example" by Swfung8 - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.
PROGRAM :
Look at this animation below ,
"Heapsort-example" by Swfung8 - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.
PROGRAM :
#include <stdio.h> #include <stdlib.h> int main() { int heap[10], no, i, j, c, root, temp; printf("How many numbers? \t"); scanf("%d", &no); printf("\n\n"); for (i = 0; i < no; i++) { printf("Enter number %d :\t",i+1); scanf("%d", &heap[i]); } for (i = 1; i < no; i++) { c = i; do { root = (c - 1) / 2; if (heap[root] < heap[c]) { temp = heap[root]; heap[root] = heap[c]; heap[c] = temp; } c = root; } while (c != 0); } printf("\n\nThe Heap array is: \n\n"); for (i = 0; i < no; i++) printf("%d\t ", heap[i]); for (j = no - 1; j >= 0; j--) { temp = heap[0]; heap[0] = heap[j]; heap[j] = temp; root = 0; do { c = 2 * root + 1; if ((heap[c] < heap[c + 1]) && c < j-1) c++; if (heap[root]<heap[c] && c<j) { temp = heap[root]; heap[root] = heap[c]; heap[c] = temp; } root = c; } while (c < j); } printf("\n\nThe sorted array is : \n\n"); for (i = 0; i < no; i++) printf("%d \t", heap[i]); return 0; }OUTPUT :