Presentation is loading. Please wait.

Presentation is loading. Please wait.

Heapsort Lecture 4 Asst. Prof. Dr. İlker Kocabaş.

Similar presentations


Presentation on theme: "Heapsort Lecture 4 Asst. Prof. Dr. İlker Kocabaş."— Presentation transcript:

1 Heapsort Lecture 4 Asst. Prof. Dr. İlker Kocabaş

2 Sorting Algorithms Insertion sort Merge sort Quicksort Heapsort Counting sort Radix sort Bucket sort Order statistics

3 Heapsort The binary heap data structure is an array object that can be viewed as a complete binary tree. Each node of the tree corresponds to an element of the array that stores the value in the node. An array A[1... n ] that represents a heap is an object with two attributes: length[A] : The number of elements in the array heap-size[A] : The number of elements in the heap stored within the array A heap-size[A]≤ length[A].

4 Heaps The root of the tree is A[1]. Given the index i of a node, the indices of its parent and children can be computed as PARENT(i) return LEFT(i) return 2i RIGHT(i) return 2i+1

5 Heap property Two kinds of heap: Maximum heap and minimum heap. Max-heap property is that for every node i other than the root Min-heap property is that for every node i other than the root

6 Heap property In both kinds, the values in the nodes satisfy the corresponding property (max-heap and min-heap properties)

7 Heap property 16 10 59 143 78 4 14 109 5 2 3 1 67 8 A max-heap viewed as a binary tree 4 11 4

8 Heap property We need to be precise in specifying whether we need a max-heap or a min-heap. – For example min-heaps are commonly used in priority queues. We define the height of a node in a heap to be the number of edges on the longest simple downward path from the node to a leaf. We define the height of the heap to be the height of its root. The height of a heap is Ω ( lg n ).

9 Heap property In this chapter we will consider the following basic procedures: The MAX-HEAPIFY which runs in O ( lg n ), is the key to maintaining the max-heap. The BUILD-MAX-HEAP which runs in O ( n ), produces a max heap from unordered input array. The HEAP-SORT which runs in O ( nlg n ), sorts an array in place. Procedures which allow the heap data structure to be used as priority queue. o MAX-HEAP-INSERT o HEAP-EXTRACT-MAX o HEAP-INCREASE-KEY o HEAP-MAXIMUM

10 Maintaining the heap property MAX-HEAPIFY is an important subroutine for manipulating max-heaps. When MAX-HEAPIFY(A,i) is called it forces the value A[i] “float down” in the max heap so that the the subtree rooted at index i becomes a max heap.

11 Maintaining the heap property

12 The action of MAX-HEAPY(A, 2) with heap-size[A]=10

13 The Running Time of MAX-HEAPIFY The running time of MAX-HEAPIFY Fix up the relationships among the parent and children Calling for MAX-HEAPIFY : The children’s subtrees each have size at most 2n/3 (The worst case occurs when the last row of the tree is exactly half full)

14 Building a heap We note that the elements in the subarray are all leaves of the tree. Therefore the procedure BUILD-MAX-HEAP goes through the remaining nodes of the tree and runs MAX-HEAPIFY on each one

15 Building a heap

16 Building a Heap(contnd.)

17 Buiding a Heap (contd.) Running time: Each call to MAX-HEAPIFY costs O(lg n) time, There are O(n) such calls. The running time is (not asymptotically tight.)

18 Buiding a Heap (contd.) Asymptotically tight bound: We note that heights of most nodes are small. An n -element heap has height  lg n  At most  n/2 h+1  nodes of any height h.

19 Buiding a Heap (contd.) 16 10 59 143 78 4 14 109 5 2 3 1 67 8 Maximum number of nodes at height h ( n =11) 4 11 4 h Actual # nodes 066 133 221 311

20 Buiding a Heap (contd.) Asymptotically tight bound (cont.) Time required by MAX_HEAPIFY when called on a node of height h is O(h)

21 Buiding a Heap (contd.)

22

23 The heapsort algorithm

24

25 Priority queues Heapsort is an excellent algorithm, but a good implementation of quicksort usually beats it in practice. The heap data structure itself has an enormous utility. One of the most popular applications of heap: its use as an efficient priority queue.

26 Priority queues( contd.) A priority queue is a data structure for maintaining a set S of elements, each with an associated value called a key. A max-priority queue suppports the following operations: INSERT( S,x ) inserts the element x into the set S. MAXIMUM( S ) returns the element of S with the largest key. EXTRACT-MAX( S ) removes and returns the element of S with the largest key INCREASE-KEY( S,x,k ) increases the value of element x ’s key to the new value k, which is assumed to be k ≥ x.

27 The MAXIMUM operation The procedure HEAP-MAXIMUM implements the MAXIMUM operation HEAP-MAXIMUM(A) 1return A[1] T(n)=Θ(1)

28 The EXTRACT-MAX operation HEAP-EXTRACT-MAX removes and returns the element of the array A with the largest key HEAP-EXTRACT-MAX(A) 1if heap-size[A]<1 2then error “heap underflow” 3max←A[1] 4A[1]←A[ heap-size[ A]] 5heap-size[ A]←heap-size[ A]-1 6MAX-HEAPIFY(A,1) 7return max

29 The INCREASE-KEY operation HEAP-INCREASE-KEY increases the value of element x ’s key to the new value k which is greater than or equal to x. HEAP-INCREASE-KEY(A, i, key) 1if key < A[i] 2then error “new key is smaller than current key” 3A[i]←key 4while i >1 and A[ PARENT(i)] < A[i] 5do exchange A[i] ↔ A[ PARENT(i)] 6 i ← PARENT(i)

30 The operation of HEAP-INCREASE-KEY Increasing the key =4 to 15

31 The INSERT Operation The MAX-HEAP-INSERT implements the insert operation. MAX-HEAP-INSERT(A, key) 1 heap-size[A]← heap-size[A]+1 2 A[ heap-size[ A]] ← - 3 HEAP-INCREASE-KEY (A, heap-size[A], key)


Download ppt "Heapsort Lecture 4 Asst. Prof. Dr. İlker Kocabaş."

Similar presentations


Ads by Google