Notes
Slide Show
Outline
1
 
2
Heaps as a Abstract Data Type
3
Samples of Max Heaps
4
Samples of Min Heaps
5
Example Max Heap Object Methods
  • Construct (initialize) a max heap object using data elements of an array ‘A’
  • Build a max heap object from an array ‘A’ of n data elements
  • Destroy (delete) a heap object and an array ‘A’
  • Compare data elements
  • Swap data elements
  • Rebuild a max heap
  • Add/insert an element into a max heap object
  • Delete an element from a max heap object
  • Do a heap sort for an array ‘A’ using a max heap object
  • Display (print) a heap object at each iteration of heap sort
  • Print a max heap object
6
Creation of a Heap
  • #define MAX_ELEMENTS 200 /* maximum heap size */
  • /* note: the heap is defined in an array that goes from index value 0 to index value MAX_ELEMENTS – 1.  The parameter n keeps track of the next index slot where one can insert a new element into the heap */
  • #define HEAP_FULL(n) (n == MAX_ELEMENTS)
  • #define HEAP_EMPTY(n) (!n)
  • typedef struct (
  • int key;
  • /* other fields   */
  • ) element;
  • element heap(MAX_ELEMENTS) ;
  • int n = 0;
7
Insertion into a max heap
8
 
9
Algorithm for inserting into a max_heap
  • Insert max_heap (element, next_pos_avail)
  • Put element at the end of the heap (in next_pos_avail);
  • While element is not the root and element > parent
  • Swap element with its parent
10
"Void insert_max_heap(element item,"
  • Void insert_max_heap(element item, int * n)
    {/* insert item into a max heap of current size *n  */
    int i;
    if (HEAP_FULL(*n)){
    fprintf(stderr, “The heap is full. \n”);
    exit(1);}
  •      i = (*n);
    while((i != 0)
  • && (item.key > heap[(ROUND(i/2)-1)].key))
  • {heap[i] = heap[(ROUND(i/2)-1)];
  • i  = ROUND(i/2) -1;}
    heap[i] = item;
    }