Survey							
                            
		                
		                * Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CSED233: Data Structures (2014F)
Lecture16: Heap Sort
Bohyung Han
CSE, POSTECH
bhhan@postech.ac.kr
Adding a Node to (Min) Heap
Takes 𝑶 log 𝒏 steps when there are 𝒏 nodes.
• Step 1: Add node at the end
• Step 2: Make swap if parent is
bigger
• Step 3: Continue to swap if
parent is bigger
2
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Delete a Node from (Min) Heap
Takes 𝑶 log 𝒏 steps when there are 𝒏 nodes.
• Step 1: Remove root node
• Step 2: Move last node to root
• Step 3: Make swap if child is
smaller
• Step 4: Make swap if child is
smaller
3
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Priority Queue Sort
• We can use a priority queue to sort a set of elements.
 Insert the elements one by one with a series of insert operations.
 Remove the elements in sorted order with a series of deleteMax
operations.
Algorithm PQ‐Sort(S, C)
Input sequence S, comparator C for the elements of S
Output sequence S sorted in increasing order according to C
P  priority queue with comparator C
while  S.isEmpty ()
e  S.removeFirst ()
P.insert (e)
while  P.isEmpty()
e  P.removeMax().getKey()
S.addLast(e)
4
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Priority Queue Sort using a Heap
public void heapSort(int[] A)
{
Heap H = new Heap();
for (int i = 0; i < A.length; i++)
H.insert(A[i]);
𝑂 𝑛 log 𝑛
for (int i = 0; i < A.length; i++)
A[i] = H.deleteMax();
𝑂 𝑛 log 𝑛
}
5
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Convert an unordered array into a heap
6
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Shift up from the root if necessary
7
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
8
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
9
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
10
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
11
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
12
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
13
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
14
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
15
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
16
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
17
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
18
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
19
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
20
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
21
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Insertion Heapifying of an Array
• Continue to shift up until the last node
22
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort
• Given: an unsorted array
• Objective: sort the array
 Make unsorted array a heap
 Easy to find the maximum (minimum) element in heap
 Discard the maximum (minimum) element, easy to find the maximum
(minimum) element in the remaining heap
 Repeat until all elements are sorted.
• In‐place algorithm
23
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Step 1: Make array a heap.
24
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Step 1: Make array a heap.
25
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Step 2: Swap the maximum and last number in the heap.
26
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Step 3: Discard the last item in the heap and heapify the
remaining array.
27
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Step 2: Swap the maximum and last number in the heap.
28
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Step 3: Discard the last item in the heap and heapify the
remaining array.
29
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Repeat swap and heapify operations.
30
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort Procedure
• Repeat swap and heapify operations.
31
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Heap‐Sort
• Consider a priority queue with 𝑛 items implemented by
means of a heap
 Space complexity: 𝑂 𝑛
 Methods insert and deleteMax: 𝑂 log 𝑛
 Methods size, isEmpty, and max: 𝑂 1
• Using a heap‐based priority queue,
 We can sort a sequence of 𝑛 elements 𝑂 𝑛 log 𝑛 time.
 The resulting algorithm is called heap‐sort.
 Heap‐sort is much faster than quadratic sorting algorithms, such as
insertion‐sort and selection‐sort.
32
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
A Faster Heap‐Sort
• Time complexity of insertion
 Insert 𝑛 keys one by one taking 𝑂 𝑛 log 𝑛 times.
 If we know all keys in advance, we can save the construction to 𝑂 𝑛
times by bottom up construction
• Bottom‐up construction
 We can construct a heap storing 𝑛 given keys log 𝑛 with phases.
 In phase 𝑖, a pair of heaps with 2𝑖 − 1 keys are merged into a heap
with 2𝑖+1 − 1 keys.
2i -1
2i+1-1
2i -1
33
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Merging Two Heaps
• Procedure
 Given two heaps and a key 𝑘, we create a new heap with the root nod
e storing 𝑘 and with the two heaps as subtrees.
 We perform downheap to restore the heap-order property
34
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Analysis of Merging
• Shift‐down with a proxy path
 Goes right first and then repeatedly goes left until the leaf of the heap
 Note: This path may differ from the actual shift‐down path.
 Each edge is traversed by at most one proxy path:
• Time complexity
 Successive insertions: 𝑂 𝑛 log 𝑛
 Bottom‐up construction: 𝑂 𝑛
35
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
Time Complexity Comparison
• Comparison to other sorting algorithms
36
CSED233: Data Structures
by Prof. Bohyung Han, Fall 2014
37