SlideShare a Scribd company logo
1 of 28
Data Structures & Algorithms
Heapsort
Heaps
A heap is data
structure that can be
viewed as a nearly
complete binary tree
 Each node
corresponds to an
element of an array
that stores its
values
 The tree is
completely filled on
all levels except the
lowest
2 4 1
8 7 9 3
1414 10
16
Heaps
Heaps are typically stored using arrays
 The array is of size length(A)
 heapsize(A) elements are currently in use
 A[1] is the “root” node of the tree
 Any element x has the following properties:
 Parent(x) is x/2
 Left(x) is 2*x
 Right(x) is 2*x+1
16 14 10 8 7 9 3 2 4 1
1 2 3 4 5 6 7 8 9 10
The Heap Property
Heaps satisfy what is known as the heap
property:
 For a max-heap, the heap property is:
 A[Parent(x)] >= A[x]
 I.e., the root node of the tree or any subtree has a
larger value than any node in its subtrees
 This is reversed for min-heaps:
 A[Parent(x)] <= A[x]
 I.e., the smallest element is at the root
Terminology
Height of a node = number of edges
that must be traversed to get from that
node to a leaf
Height of a tree = height of the root =
O(lg n)
Basic heap operations generally take
O(lg n), because they are based on the
height of the tree
Maintaining the Heap Property
MaxHeapify is a routine used to maintain the
max-heap property of an array
 It takes as input the array to heapify, the element
to begin with, and the number of elements in the
heap
 Assumes Left(x) and Right(x) are heaps, but the
tree rooted at x may not be, thus violating the
heap property
 The idea is to propagate x through the tree into
it’s proper position
MaxHeapify
MaxHeapify(A, x, heapsize)
{
L = Left(x)
R = Right(x)
if ( L < heapsize && A[L] > A[x] )
Largest = L
else
Largest = x
if ( R <= heapsize && A[R] > A[Largest] )
Largest = R
if ( Largest != x )
{
swap(A[x], A[Largest])
MaxHeapify(A, Largest, heapsize)
}
}
MaxHeapify In Action
Here, the red node is out of place, violating
the heap property
2 8 1
14 7 9 3
144 10
16
MaxHeapify In Action
After calling MaxHeapify(A, 2, 10), the red
node is pushed further down the heap
2 8 1
4 7 9 3
1414 10
16
MaxHeapify In Action
After calling MaxHeapify(A, 4, 10), the heap is now
correct – a further call to MaxHeapify(A, 9, 10) will
yield no further changes
2 4 1
8 7 9 3
1414 10
16
Building a Heap
Given an unsorted array, we can build a
heap recursively from the bottom-up
using this algorithm:
BuildMaxHeap(A, size)
{
for ( x = length(A)/2 ; x >= 1 ; --x )
MaxHeapify(A, x, size)
}
Building a Heap
14 8 7
2 16 9 10
141 3
4
1
2 3
4 5 6 7
8 9 10
Building a Heap
14 8 7
2 16 9 10
141 3
4
1
2 3
4 5 6 7
8 9 10
Building a Heap
2 8 7
14 16 9 10
141 3
4
1
2 3
4 5 6 7
8 9 10
Building a Heap
2 8 7
14 16 9 3
141 10
4
1
2 3
4 5 6 7
8 9 10
Building a Heap
2 8 7
14 1 9 3
1416 10
4
1
2 3
4 5 6 7
8 9 10
Building a Heap
2 8 1
14 7 9 3
1414 10
16
1
2 3
4 5 6 7
8 9 10
Analysis of BuildMaxHeap
How long does it take?
 MaxHeapify has cost O(lgn), and is called O(n)
times, so intuitively there’s O(nlgn)
 This isn’t an asymptotically tight bound, though
 The MaxHeapify cost isn’t really based on n
 It’s cost is based on the height of the node in the tree
 An n-element heap has height lgn, and at most n/2h+1
nodes of any height h
 The math at this point gets a bit complicated, but
results in a running time of O(n) (see pg. 145
(old)/135 (new))
The HeapSort Algorithm
The HeapSort algorithm sorts an array by
using a max-heap as an intermediate
step
 First, a max-heap is built from the input
 The max element is exchanged with
A[heapsize], to put it in its final position
 The remainder of the array is then re-
heapified, using heapsize - 1
The HeapSort Algorithm
HeapSort(A, size)
{
BuildHeap(A, size)
For ( x = size ; x >= 2 ; --x )
{
swap(A[1], A[x])
--heapsize
Heapify(A, 1, x-1)
}
}
What is the running time of HeapSort?
Analysis of HeapSort
In practice, the HeapSort will usually be
beat by QuickSort
The heap data structure has a number of
other uses, however
Priority Queues
One use of a heap is as a priority queue
Priority queues are often used in an OS to
perform job/resource scheduling
 Also in simulators, and many other tasks
A priority queue is a data structure for
maintaining a set of elements (S), each with
an associated value called a key
 Priority queues come in two flavors: max-priority
queues and min-priority queues
Priority Queues
Max-priority queues support these
operations:
 Insert(S, x) – inserts x into S
 Maximum(S) – returns the element in S with the
largest key
 ExtractMax(S) – removes and returns the element
in S with the largest key
 IncreaseKey(S, x, k) – increases the value of
element x’s key to the new value k
Priority Queuess
HeapMaximum(A)
{
return A[1];
}
Priority Queues
HeapExtractMax(A, heapsize)
{
if ( heapsize < 1 )
throw HeapUnderflowError();
max = A[1];
A[1] = A[heapsize];
--heapsize;
MaxHeapify(A, 1, heapsize);
return max;
}
Priority Queues
HeapIncreaseKey(A, i, key)
{
if ( key < A[i] )
throw HeapKeyError();
A[i] = key;
while ( i > 1 && A[Parent(i) < A[i] )
{
swap(A[i], A[Parent(i)]);
i = Parent(i);
}
}
Priority Queues
MaxHeapInsert(A, key, heapsize)
{
++heapsize;
A[heapsize] = -MAXKEY;
HeapIncreaseKey(A, A[heapsize], key);
}
Exercises
1st Edition:
 Pg 142: 7.1-1, 7.1-2, 7.1-6
 Pg 144: 7.2-1, 7.2-2, 7.2-4
 Pg 150: 7.5-3, 7.5-5
2nd Edition
 Pg 129: 6.1-1, 6.1-2, 6.1-6
 Pg 132: 6.2-1, 6.2-3, 6.2-5
 Pg 142: 6.5-6, 6.5-7

More Related Content

What's hot (20)

4 heapsort pq
4 heapsort pq4 heapsort pq
4 heapsort pq
 
Heaps
HeapsHeaps
Heaps
 
Heap and heapsort
Heap and heapsortHeap and heapsort
Heap and heapsort
 
Heapsort ppt
Heapsort pptHeapsort ppt
Heapsort ppt
 
Heap Sort in Design and Analysis of algorithms
Heap Sort in Design and Analysis of algorithmsHeap Sort in Design and Analysis of algorithms
Heap Sort in Design and Analysis of algorithms
 
Heaps
HeapsHeaps
Heaps
 
Heapsort
HeapsortHeapsort
Heapsort
 
heap Sort Algorithm
heap  Sort Algorithmheap  Sort Algorithm
heap Sort Algorithm
 
Heapsort quick sort
Heapsort quick sortHeapsort quick sort
Heapsort quick sort
 
Heap Sort Algorithm
Heap Sort Algorithm Heap Sort Algorithm
Heap Sort Algorithm
 
Heap sort
Heap sortHeap sort
Heap sort
 
Heaps
HeapsHeaps
Heaps
 
Heapsort
HeapsortHeapsort
Heapsort
 
Heap tree
Heap treeHeap tree
Heap tree
 
3.7 heap sort
3.7 heap sort3.7 heap sort
3.7 heap sort
 
DataStructure Concepts-HEAP,HASH,Graph
DataStructure Concepts-HEAP,HASH,GraphDataStructure Concepts-HEAP,HASH,Graph
DataStructure Concepts-HEAP,HASH,Graph
 
05 heap 20161110_jintaeks
05 heap 20161110_jintaeks05 heap 20161110_jintaeks
05 heap 20161110_jintaeks
 
Data Structure and Algorithms Heaps and Trees
Data Structure and Algorithms Heaps and TreesData Structure and Algorithms Heaps and Trees
Data Structure and Algorithms Heaps and Trees
 
Heap Data Structure
 Heap Data Structure Heap Data Structure
Heap Data Structure
 
Heapsort
HeapsortHeapsort
Heapsort
 

Similar to Cis435 week05

Algorithm Design and Complexity - Course 4 - Heaps and Dynamic Progamming
Algorithm Design and Complexity - Course 4 - Heaps and Dynamic ProgammingAlgorithm Design and Complexity - Course 4 - Heaps and Dynamic Progamming
Algorithm Design and Complexity - Course 4 - Heaps and Dynamic ProgammingTraian Rebedea
 
lecture 5
lecture 5lecture 5
lecture 5sajinsc
 
lecture 6
lecture 6lecture 6
lecture 6sajinsc
 
Sienna 7 heaps
Sienna 7 heapsSienna 7 heaps
Sienna 7 heapschidabdu
 
03-data-structures.pdf
03-data-structures.pdf03-data-structures.pdf
03-data-structures.pdfNash229987
 
CS-102 BT_24_3_14 Binary Tree Lectures.pdf
CS-102 BT_24_3_14 Binary Tree Lectures.pdfCS-102 BT_24_3_14 Binary Tree Lectures.pdf
CS-102 BT_24_3_14 Binary Tree Lectures.pdfssuser034ce1
 
week2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptx
week2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptxweek2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptx
week2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptxhardmarcelia
 
Heap Sort (project).ppt
Heap Sort (project).pptHeap Sort (project).ppt
Heap Sort (project).pptSudhaPatel11
 
Heap Sort (project).ppt
Heap Sort (project).pptHeap Sort (project).ppt
Heap Sort (project).pptAmitShou
 
21. Heap_new.ppt
21. Heap_new.ppt21. Heap_new.ppt
21. Heap_new.pptAryanGour1
 
USING JAVAThere are at least two types of nearly sorted array.pdf
USING JAVAThere are at least two types of nearly sorted array.pdfUSING JAVAThere are at least two types of nearly sorted array.pdf
USING JAVAThere are at least two types of nearly sorted array.pdflohithkart
 
heap sort in the design anad analysis of algorithms
heap sort in the design anad analysis of algorithmsheap sort in the design anad analysis of algorithms
heap sort in the design anad analysis of algorithmsssuser7319f8
 
Max priority queue
Max priority queueMax priority queue
Max priority queue9854098540
 
III_Data Structure_Module_1.pptx
III_Data Structure_Module_1.pptxIII_Data Structure_Module_1.pptx
III_Data Structure_Module_1.pptxshashankbhadouria4
 

Similar to Cis435 week05 (20)

Algorithms - "heap sort"
Algorithms - "heap sort"Algorithms - "heap sort"
Algorithms - "heap sort"
 
Algorithm Design and Complexity - Course 4 - Heaps and Dynamic Progamming
Algorithm Design and Complexity - Course 4 - Heaps and Dynamic ProgammingAlgorithm Design and Complexity - Course 4 - Heaps and Dynamic Progamming
Algorithm Design and Complexity - Course 4 - Heaps and Dynamic Progamming
 
lecture 5
lecture 5lecture 5
lecture 5
 
Unit III Heaps.ppt
Unit III Heaps.pptUnit III Heaps.ppt
Unit III Heaps.ppt
 
lecture 6
lecture 6lecture 6
lecture 6
 
Sienna 7 heaps
Sienna 7 heapsSienna 7 heaps
Sienna 7 heaps
 
03-data-structures.pdf
03-data-structures.pdf03-data-structures.pdf
03-data-structures.pdf
 
CS-102 BT_24_3_14 Binary Tree Lectures.pdf
CS-102 BT_24_3_14 Binary Tree Lectures.pdfCS-102 BT_24_3_14 Binary Tree Lectures.pdf
CS-102 BT_24_3_14 Binary Tree Lectures.pdf
 
week2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptx
week2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptxweek2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptx
week2.v2 dsfjue0owirewoifudsoufsoiuewrew.pptx
 
Heap Sort (project).ppt
Heap Sort (project).pptHeap Sort (project).ppt
Heap Sort (project).ppt
 
Heap Sort (project).ppt
Heap Sort (project).pptHeap Sort (project).ppt
Heap Sort (project).ppt
 
Heap Sort (project).ppt
Heap Sort (project).pptHeap Sort (project).ppt
Heap Sort (project).ppt
 
21. Heap_new.ppt
21. Heap_new.ppt21. Heap_new.ppt
21. Heap_new.ppt
 
USING JAVAThere are at least two types of nearly sorted array.pdf
USING JAVAThere are at least two types of nearly sorted array.pdfUSING JAVAThere are at least two types of nearly sorted array.pdf
USING JAVAThere are at least two types of nearly sorted array.pdf
 
Heap Tree.pdf
Heap Tree.pdfHeap Tree.pdf
Heap Tree.pdf
 
Stack and Hash Table
Stack and Hash TableStack and Hash Table
Stack and Hash Table
 
heap sort in the design anad analysis of algorithms
heap sort in the design anad analysis of algorithmsheap sort in the design anad analysis of algorithms
heap sort in the design anad analysis of algorithms
 
heapsort_bydinesh
heapsort_bydineshheapsort_bydinesh
heapsort_bydinesh
 
Max priority queue
Max priority queueMax priority queue
Max priority queue
 
III_Data Structure_Module_1.pptx
III_Data Structure_Module_1.pptxIII_Data Structure_Module_1.pptx
III_Data Structure_Module_1.pptx
 

More from ashish bansal (14)

Data struters
Data strutersData struters
Data struters
 
Cis435 week04
Cis435 week04Cis435 week04
Cis435 week04
 
Cis435 week03
Cis435 week03Cis435 week03
Cis435 week03
 
Cis435 week02
Cis435 week02Cis435 week02
Cis435 week02
 
Cis435 week01
Cis435 week01Cis435 week01
Cis435 week01
 
Chapter 17
Chapter 17Chapter 17
Chapter 17
 
Chapter 16
Chapter 16Chapter 16
Chapter 16
 
Chapter 15
Chapter 15Chapter 15
Chapter 15
 
35 algorithm-types
35 algorithm-types35 algorithm-types
35 algorithm-types
 
32 algorithm-types
32 algorithm-types32 algorithm-types
32 algorithm-types
 
7 stacksqueues
7 stacksqueues7 stacksqueues
7 stacksqueues
 
5 searching
5 searching5 searching
5 searching
 
4 recursion
4 recursion4 recursion
4 recursion
 
Cis435 week06
Cis435 week06Cis435 week06
Cis435 week06
 

Recently uploaded

Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...PsychoTech Services
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024Janet Corral
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 

Recently uploaded (20)

Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 

Cis435 week05

  • 1. Data Structures & Algorithms Heapsort
  • 2. Heaps A heap is data structure that can be viewed as a nearly complete binary tree  Each node corresponds to an element of an array that stores its values  The tree is completely filled on all levels except the lowest 2 4 1 8 7 9 3 1414 10 16
  • 3. Heaps Heaps are typically stored using arrays  The array is of size length(A)  heapsize(A) elements are currently in use  A[1] is the “root” node of the tree  Any element x has the following properties:  Parent(x) is x/2  Left(x) is 2*x  Right(x) is 2*x+1 16 14 10 8 7 9 3 2 4 1 1 2 3 4 5 6 7 8 9 10
  • 4. The Heap Property Heaps satisfy what is known as the heap property:  For a max-heap, the heap property is:  A[Parent(x)] >= A[x]  I.e., the root node of the tree or any subtree has a larger value than any node in its subtrees  This is reversed for min-heaps:  A[Parent(x)] <= A[x]  I.e., the smallest element is at the root
  • 5. Terminology Height of a node = number of edges that must be traversed to get from that node to a leaf Height of a tree = height of the root = O(lg n) Basic heap operations generally take O(lg n), because they are based on the height of the tree
  • 6. Maintaining the Heap Property MaxHeapify is a routine used to maintain the max-heap property of an array  It takes as input the array to heapify, the element to begin with, and the number of elements in the heap  Assumes Left(x) and Right(x) are heaps, but the tree rooted at x may not be, thus violating the heap property  The idea is to propagate x through the tree into it’s proper position
  • 7. MaxHeapify MaxHeapify(A, x, heapsize) { L = Left(x) R = Right(x) if ( L < heapsize && A[L] > A[x] ) Largest = L else Largest = x if ( R <= heapsize && A[R] > A[Largest] ) Largest = R if ( Largest != x ) { swap(A[x], A[Largest]) MaxHeapify(A, Largest, heapsize) } }
  • 8. MaxHeapify In Action Here, the red node is out of place, violating the heap property 2 8 1 14 7 9 3 144 10 16
  • 9. MaxHeapify In Action After calling MaxHeapify(A, 2, 10), the red node is pushed further down the heap 2 8 1 4 7 9 3 1414 10 16
  • 10. MaxHeapify In Action After calling MaxHeapify(A, 4, 10), the heap is now correct – a further call to MaxHeapify(A, 9, 10) will yield no further changes 2 4 1 8 7 9 3 1414 10 16
  • 11. Building a Heap Given an unsorted array, we can build a heap recursively from the bottom-up using this algorithm: BuildMaxHeap(A, size) { for ( x = length(A)/2 ; x >= 1 ; --x ) MaxHeapify(A, x, size) }
  • 12. Building a Heap 14 8 7 2 16 9 10 141 3 4 1 2 3 4 5 6 7 8 9 10
  • 13. Building a Heap 14 8 7 2 16 9 10 141 3 4 1 2 3 4 5 6 7 8 9 10
  • 14. Building a Heap 2 8 7 14 16 9 10 141 3 4 1 2 3 4 5 6 7 8 9 10
  • 15. Building a Heap 2 8 7 14 16 9 3 141 10 4 1 2 3 4 5 6 7 8 9 10
  • 16. Building a Heap 2 8 7 14 1 9 3 1416 10 4 1 2 3 4 5 6 7 8 9 10
  • 17. Building a Heap 2 8 1 14 7 9 3 1414 10 16 1 2 3 4 5 6 7 8 9 10
  • 18. Analysis of BuildMaxHeap How long does it take?  MaxHeapify has cost O(lgn), and is called O(n) times, so intuitively there’s O(nlgn)  This isn’t an asymptotically tight bound, though  The MaxHeapify cost isn’t really based on n  It’s cost is based on the height of the node in the tree  An n-element heap has height lgn, and at most n/2h+1 nodes of any height h  The math at this point gets a bit complicated, but results in a running time of O(n) (see pg. 145 (old)/135 (new))
  • 19. The HeapSort Algorithm The HeapSort algorithm sorts an array by using a max-heap as an intermediate step  First, a max-heap is built from the input  The max element is exchanged with A[heapsize], to put it in its final position  The remainder of the array is then re- heapified, using heapsize - 1
  • 20. The HeapSort Algorithm HeapSort(A, size) { BuildHeap(A, size) For ( x = size ; x >= 2 ; --x ) { swap(A[1], A[x]) --heapsize Heapify(A, 1, x-1) } } What is the running time of HeapSort?
  • 21. Analysis of HeapSort In practice, the HeapSort will usually be beat by QuickSort The heap data structure has a number of other uses, however
  • 22. Priority Queues One use of a heap is as a priority queue Priority queues are often used in an OS to perform job/resource scheduling  Also in simulators, and many other tasks A priority queue is a data structure for maintaining a set of elements (S), each with an associated value called a key  Priority queues come in two flavors: max-priority queues and min-priority queues
  • 23. Priority Queues Max-priority queues support these operations:  Insert(S, x) – inserts x into S  Maximum(S) – returns the element in S with the largest key  ExtractMax(S) – removes and returns the element in S with the largest key  IncreaseKey(S, x, k) – increases the value of element x’s key to the new value k
  • 25. Priority Queues HeapExtractMax(A, heapsize) { if ( heapsize < 1 ) throw HeapUnderflowError(); max = A[1]; A[1] = A[heapsize]; --heapsize; MaxHeapify(A, 1, heapsize); return max; }
  • 26. Priority Queues HeapIncreaseKey(A, i, key) { if ( key < A[i] ) throw HeapKeyError(); A[i] = key; while ( i > 1 && A[Parent(i) < A[i] ) { swap(A[i], A[Parent(i)]); i = Parent(i); } }
  • 27. Priority Queues MaxHeapInsert(A, key, heapsize) { ++heapsize; A[heapsize] = -MAXKEY; HeapIncreaseKey(A, A[heapsize], key); }
  • 28. Exercises 1st Edition:  Pg 142: 7.1-1, 7.1-2, 7.1-6  Pg 144: 7.2-1, 7.2-2, 7.2-4  Pg 150: 7.5-3, 7.5-5 2nd Edition  Pg 129: 6.1-1, 6.1-2, 6.1-6  Pg 132: 6.2-1, 6.2-3, 6.2-5  Pg 142: 6.5-6, 6.5-7