CSE 373 Data Structures and Algorithms

Slides:



Advertisements
Similar presentations
PRIORITY QUEUES AND HEAPS Lecture 19 CS2110 Spring
Advertisements

Priority Queues CSC 172 SPRING 2002 LECTURE 16. Priority Queues Model Set with priorities associate with elements Priorites are comparable by a < operator.
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
Dr. Andrew Wallace PhD BEng(hons) EurIng
CSE 373 Data Structures and Algorithms Lecture 13: Priority Queues (Heaps)
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
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.
Priority Queues and Heaps. October 2004John Edgar2  A queue should implement at least the first two of these operations:  insert – insert item at the.
PRIORITY QUEUES AND HEAPS Slides of Ken Birman, Cornell University.
Week 13 - Friday.  What did we talk about last time?  Sorting  Insertion sort  Merge sort  Started quicksort.
FALL 2005CENG 213 Data Structures1 Priority Queues (Heaps) Reference: Chapter 7.
CSE 373: Data Structures and Algorithms Lecture 11: Priority Queues (Heaps) 1.
Java Methods A & AB Object-Oriented Programming and Data Structures Maria Litvin ● Gary Litvin Copyright © 2006 by Maria Litvin, Gary Litvin, and Skylight.
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. "
Partially Ordered Data ,Heap,Binary Heap
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
Priority Queues (Heaps)
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.
CSE 373: Data Structures and Algorithms
CMSC 341 Lecture 14 Priority Queues & Heaps
Lecture 26: Advanced List Implementation
A tree set Our SearchTree class is essentially a set.
Tree Representation Heap.
CSE 373: Data Structures and Algorithms
Hassan Khosravi / Geoffrey Tien
"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
Binary Search Trees continued; Tree Sets
slides created by Marty Stepp
Priority Queues & Heaps
CSE 373: Data Structures and Algorithms
CSE373: Data Structures & Algorithms Lecture 7: Binary Heaps, Continued Dan Grossman Fall 2013.
CSE 373 Data Structures and Algorithms
CSE 373 Priority queue implementation; Intro to heaps
CSC 380: Design and Analysis of Algorithms
Priority Queues (Heaps)
Priority Queues CSE 373 Data Structures.
Priority Queues & Heaps
Heaps By JJ Shepherd.
CSE 373: Data Structures and Algorithms
CSE 143 Lecture 21 Advanced List Implementation
Heaps.
CSE 373: Data Structures and Algorithms
Presentation transcript:

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

Code for add method public void add(int value) { // grow array if needed if (size >= array.length - 1) { array = resize(); } // place element into heap at bottom size++; int index = size; array[index] = value; bubbleUp();

The bubbleUp helper private void bubbleUp() { int index = size; while (hasParent(index) && (parent(index) > array[index])) { // parent/child are out of order; swap them swap(index, parentIndex(index)); index = parentIndex(index); } // helpers private boolean hasParent(int i) { return i > 1; } private int parentIndex(int i) { return i / 2; } private int parent(int i) { return array[parentIndex(i)]; }

The peek operation peek on a min-heap is trivial; because of the heap properties, the minimum element is always the root peek is O(1) peek on a max-heap would be O(1) as well, but would return you the maximum element 99 60 40 80 20 10 50 700 85 65

Code for peek method public int peek() { if (isEmpty()) { throw new NoSuchElementException(); } return array[1];

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

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? 99 60 40 80 20 65 700 50 85 99 60 50 80 40 20 700 65 85

Heap practice problem Show the state of the following 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 = peek(); // move last element of array up to root array[1] = array[size]; size--; bubbleDown(); return result; } 9

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 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) Recall: When constructing an ArrayList, you specify the type of elements it will contain between < and >. ArrayList<String> names = new ArrayList<String>(); names.add("Kona"); names.add("Daisy"); We say that the ArrayList class accepts a type parameter, or that it is a generic class. ArrayList<Type> name = new ArrayList<Type>();

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.