Module 4: Priority Queue and Heap Sort

Priority Queue

  • Not a queue, but a set of elements each with a priority

  • Add in any order and remove in order of priority

    • Max first

    • Min first

  • Behaviors

    • enqueue

    • dequeue

    • isEmpty

  • Implementations

    • Unsorted array

    • Sorted array

    • Unsorted linked-list

    • Sorted linked-list

    • Heap

  • Applications

    • Sorting

    • Find the n largest elements

    • Event-driven simulation

    • Huffman coding

    • Dijkstra’s algorithm

    • A* search

Heap

  • Behaviors

    • add (put, insert)

    • remove (get, delete)

    • percolate up (swim, bubble)

    • percolate down (sink)

    • heapify (build heap)

  • Complexity

    Mostly determined by the depth of the tree which is \(\Theta(\log n)\)

    • enqueue: \(\Theta(\log n)\), add to the end and percolate up

    • dequeue: \(\Theta(\log n)\), replace the root with the last element and percolate down

    • percolate up: \(\Theta(\log n)\)

    • percolate down: \(\Theta(\log n)\)

    • heapify:

      • \(\Theta(n)\) - repeated percolate down on all internal nodes

      • \(\Theta(n \log n)\) - repeated add

  • Heap sort

    • Build a heap from the array

    • Repeatedly swap the root with the last element of the unsorted section and percolate down

    • \(\Theta(n \log n)\)