CSE 373: Data Structures and Algorithms

Slides:



Advertisements
Similar presentations
CMSC 341 Binary Heaps Priority Queues. 8/3/2007 UMBC CSMC 341 PQueue 2 Priority Queues Priority: some property of an object that allows it to be prioritized.
Advertisements

CSE 143 Lecture 22: Advanced List Implementation (ADTs; interfaces; abstract classes; inner classes; generics; iterators)
CMPT 225 Priority Queues and Heaps. Priority Queues Items in a priority queue have a priority The priority is usually numerical value Could be lowest.
Version TCSS 342, Winter 2006 Lecture Notes Priority Queues Heaps.
1 TCSS 342, Winter 2005 Lecture Notes Priority Queues and Heaps Weiss Ch. 21, pp
Building Java Programs Inner classes, generics, abstract classes reading: 9.6, 15.4,
1 CSC 427: Data Structures and Algorithm Analysis Fall 2010 transform & conquer  transform-and-conquer approach  balanced search trees o AVL, 2-3 trees,
1 HEAPS & PRIORITY QUEUES Array and Tree implementations.
CSE 143 Lecture 20 Binary Search Trees continued; Tree Sets read slides created by Marty Stepp and Hélène Martin
Topic 24 Heaps "You think you know when you can learn, are more sure when you can write even more when you can teach, but certain when you can program."
Priority Queue. Priority Queues Queue (FIFO). Priority queue. Deletion from a priority queue is determined by the element priority. Two kinds of priority.
CSE 143 Lecture 24 Advanced collection classes (ADTs; abstract classes; inner classes; generics; iterators) read 11.1, 9.6, , slides.
1 CSE 331 Generics (Parametric Polymorphism) slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia
CSE 373: Data Structures and Algorithms Lecture 11: Priority Queues (Heaps) 1.
Lecture on Data Structures(Trees). Prepared by, Jesmin Akhter, Lecturer, IIT,JU 2 Properties of Heaps ◈ Heaps are binary trees that are ordered.
1 Priority Queues (Heaps). 2 Priority Queues Many applications require that we process records with keys in order, but not necessarily in full sorted.
Priority Queues and Heaps. John Edgar  Define the ADT priority queue  Define the partially ordered property  Define a heap  Implement a heap using.
"Teachers open the door, but you must enter by yourself. "
CSE373: Data Structures & Algorithms
CSE 143 Lecture 20 Binary Search Trees continued; Tree Sets
Priority Queues and Heaps Suggested reading from Weiss book: Ch. 21
Heaps And Priority Queues
A tree set Our SearchTree class is essentially a set.
Section 9.2b Adding and Removing from a Heap.
Binary Heaps What is a Binary Heap?
March 31 – Priority Queues and the heap
Bohyung Han CSE, POSTECH
Heap Sort Example Qamar Abbas.
Priority Queues Linked-list Insert Æ Æ head head
Binary Heaps What is a Binary Heap?
Binary Heaps What is a Binary Heap?
ADT Heap data structure
Building Java Programs
- Alan Perlis Heaps "You think you know when you can learn,
Chapter 8 – Binary Search Tree
Priority Queue & Heap CSCI 3110 Nan Chen.
Part-D1 Priority Queues
CSE 373: Data Structures and Algorithms
Generics (Parametric Polymorphism)
CMSC 341 Lecture 14 Priority Queues & Heaps
Words exercise Write code to read a file and display its words in reverse order. A solution that uses an array: String[] allWords = new String[1000]; int.
- Alan Perlis Topic 24 Heaps "You think you know when you can learn,
Lecture 26: Advanced List Implementation
A tree set Our SearchTree class is essentially a set.
CSE 373 Data Structures and Algorithms
Tree Representation Heap.
CSE 373: Data Structures and Algorithms
"Teachers open the door, but you must enter by yourself. "
Heaps Chapter 11 has several programming projects, including a project that uses heaps. This presentation shows you what a heap is, and demonstrates.
Building Java Programs
Heapsort.
Binary Search Trees continued; Tree Sets
slides created by Marty Stepp
Priority Queues & Heaps
CSE 143 Lecture 25 Advanced collection classes
CSE 373 Implementing a Stack Reading: Weiss Ch. 3; 3.6; 1.5
CSE 373 Data Structures and Algorithms
CSE 373 Priority queue implementation; Intro to heaps
CSC 380: Design and Analysis of Algorithms
Priority Queues (Heaps)
Heapsort.
Priority Queues & Heaps
Heaps By JJ Shepherd.
Heapsort.
CSE 373: Data Structures and Algorithms
CSE 143 Lecture 21 Advanced List Implementation
Heaps.
CSE 373: Data Structures and Algorithms
Heaps Section 6.4, Pg. 309 (Section 9.1).
Presentation transcript:

CSE 373: Data Structures and Algorithms Lecture 12: Priority Queues (Heaps) II

Removing from a min-heap min-heaps support remove of the min element (the root) must remove the root while maintaining heap completeness and ordering properties intuitively, the last leaf must disappear to keep it a heap initially, just swap root with last leaf (we'll fix it) 10 65 20 80 20 80 40 60 85 99 40 60 85 99 700 50 65 700 50 65

Removing from heap, cont'd. must fix heap-ordering property; root is out of order shift the root downward ("bubble down") until it's in place swap it with its smaller child each time What happens if we don't always swap with the smaller child? 65 20 20 80 40 80 40 60 85 99 50 60 85 99 700 50 700 65

Heap practice problem The heap below is the min-heap built in the last heap practice problem. Now, show the state of the heap after remove has been executed on it 3 times, and state which elements are returned by the removal. 104 42 25 6 19 2 76 50 11 55 88 20

Code for remove method public int remove() { int result = this.peek(); // move last element of array up to root array[1] = array[size]; array[size] = 0; size--; bubbleDown(); return result; }

The bubbleDown helper private void bubbleDown() { int index = 1; while (hasLeftChild(index)) { int childIndex = leftIndex(index); if (hasRightChild(index) && (array[rightIndex(index)] < array[leftIndex(index)])) { childIndex = rightIndex(index); } if (array[childIndex] < array[index]) { swap(childIndex, index); index = childIndex; } else { break; // helpers private int leftIndex(int i) { return i * 2; } private int rightIndex(int i) { return i * 2 + 1; } private boolean hasLeftChild(int i) { return leftIndex(i) <= size; } private boolean hasRightChild(int i) { return rightIndex(i) <= size; }

Advantages of array heap the "implicit representation" of a heap in an array makes several operations very fast add a new node at the end (O(1)) from a node, find its parent (O(1)) swap parent and child (O(1)) a lot of dynamic memory allocation of tree nodes is avoided the algorithms shown usually have elegant solutions

Generic Collection Implementation

PrintJob Class public class PrintJob { private String user; private int number; private int priority; public PrintJob(int number, String user, int priority) { this.number = number; this.user = user; this.priority = priority; } public String toString() { return this.number + " (" + user + "):" + this.priority;

Type Parameters (Generics) ArrayList<Type> name = new ArrayList<Type>(); Recall: When constructing a java.util.ArrayList, you specify the type of elements it will contain between < and >. We say that the ArrayList class accepts a type parameter, or that it is a generic class. ArrayList<String> names = new ArrayList<String>(); names.add("Kona"); names.add("Daisy");

Implementing generics // a parameterized (generic) class public class name<Type> { ... } By putting the Type in < >, you are demanding that any client that constructs your object must supply a type parameter. The rest of your class's code can refer to that type by name. Exercise: Convert our priority queue classes to use generics.

Generics and arrays public class Foo<T> { private T myField; // ok public void method1(T param) { myField = new T(); // error T[] a = new T[10]; // error } You cannot create objects or arrays of a parameterized type.

Generics/arrays, fixed public class Foo<T> { private T myField; // ok public void method1(T param) { myField = param; // ok T[] a2 = (T[]) (new Object[10]); // ok } But you can create variables of that type, accept them as parameters, return them, or create arrays by casting Object[].