week 13 friday what did we talk about last time exam 2
play

Week 13 - Friday What did we talk about last time? Exam 2 post - PowerPoint PPT Presentation

Week 13 - Friday What did we talk about last time? Exam 2 post mortem Heaps Lab hours Wednesdays at 5 p.m. in The Point 113 Saturdays at noon in The Point 113 (Cancelled this Saturday! Contact Olivia Langley at


  1. Week 13 - Friday

  2.  What did we talk about last time?  Exam 2 post mortem  Heaps

  3.  Lab hours  Wednesdays at 5 p.m. in The Point 113  Saturdays at noon in The Point 113  (Cancelled this Saturday! Contact Olivia Langley at olivia.langley@otterbein.edu to set up an alternate time)  CS Club  Tuesdays at 5 p.m. in The Point 113 (or next door in The Point 112)  (Cancelled next Tuesday due to Thanksgiving!)

  4.  It turns out that a heap is a great way to implement a priority queue  Although it's useful to think of a heap as a complete binary tree, almost no one implements them that way  Instead, we can view the heap as an array  Because it's a complete binary tree, there will be no empty spots in the array

  5.  Illustrated: 10 10 9 3 0 1 9 3 0 1 2 3 4 0 1  The left child of element i is at 2 i + 1  The right child of element i is at 2 i + 2

  6. public class PriorityQueue { private int[] keys = new int[10]; private int size = 0; … }

  7. public void insert(int key)  Always put the key at the end of the array (resizing if needed)  The value will often need to be bubbled up, using the following helper method private void bubbleUp(int index)

  8. public int max()  Find the maximum value in the priority queue  Hint: this method is really easy

  9. public int removeMax()  Store the value at the top of the heap (array index 0 )  Replace it with the last legal value in the array  This value will generally need to be bubbled down, using the following helper method  Bubbling down is harder than bubbling up, because you might have two legal children! private void bubbleDown(int index)

  10.  Pros:  Best , worst , and average case running time of O( n log n )  In-place  Good for arrays  Cons:  Not adaptive  Not stable

  11.  Make the array have the heap property: Let i be the index of the parent of the last two nodes 1. Bubble the value at index i down if needed 2. Decrement i 3. If i is not less than zero, go to Step 2 4. 1. Let pos be the index of the last element in the array 2. Swap index 0 with index pos 3. Bubble down index 0 4. Decrement pos 5. If pos is greater than zero, go to Step 2

  12. 7 7 7 108 45 45 54 54 0 108 108 51 54 54 45 45 37 37 37 37 108 0 0 0 51 51 51 7

  13. 108 54 51 45 37 7 0 54 45 45 37 7 0 7 51 51 0 0 0 37 37 45 7 7 7 45 45 45 37 37 37 51 51 51 51 0 0 54 54 54 54 54 7 108 108 108 108 108 108

  14.  Heap sort is a clever algorithm that uses part of the array to store the heap and the rest to store the (growing) sorted array  Even though a priority queue uses both bubble up and bubble down methods to manage the heap, heap sort only needs bubble down  You don't need bubble up because nothing is added to the heap, only removed

  15.  Timsort is a recently developed sorting algorithm used as the default sort in Python  It is also used to sort non-primitive arrays in Java  It's a hybrid sort, combining elements of merge sort and insertion sort  Features  Worst case and average case running time: O( n log n )  Best case running time: O( n )  Stable  Adaptive  Not in-place

  16.  It is similar to when we insertion sorted arrays of length 10 or smaller  We also want to find "runs" of data of two kinds:  Non-decreasing: 34, 45, 58, 58, 91  Strictly decreasing: 85, 67, 24, 18, 7  These runs are already sorted (or only need a reversal)  If runs are not as long as a minimum run length determined by the algorithm, the next few values are added in and sorted  Finally, the sorted runs are merged together  The algorithm can use a specially tuned galloping mode when merging from two lists  Essentially copying in bulk from one list when it knows that it won't need something from the other for a while

  17.  It might be useful to implement Timsort in class, but it has a lot of special cases  It was developed from both a theoretical perspective but also with a lot of testing  If you want to know more, read here:  https://www.infopulse.com/blog/timsort-sorting-algorithm/

  18.  Understanding how sorts work can be challenging  Understanding how running time is affected by various algorithms and data sets is not obvious  To help, there are many good visualizations of sorting algorithms in action:  http://www.youtube.com/watch?v=kPRA0W1kECg  https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html

  19.  Tries

  20.  Keep working on Project 4  Work on Assignment 7  Due next Tuesday  Read Section 5.2

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend