SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Dernier

Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Science lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonScience lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonJericReyAuditor
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
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
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfMahmoud M. Sallam
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfSumit Tiwari
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 

Dernier (20)

Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Science lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonScience lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lesson
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
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
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdf
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 

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