CSE 2123 Collections: Sets and Iterators (Hash functions and Trees) Jeremy Morris

Save this PDF as:

Size: px
Start display at page:

Download "CSE 2123 Collections: Sets and Iterators (Hash functions and Trees) Jeremy Morris"

Transcription

1 CSE 2123 Collections: Sets and Iterators (Hash functions and Trees) Jeremy Morris 1

2 Collections - Set What is a Set? A Set is an unordered sequence of data with no duplicates Not like a List where you know where in the collection you can find a data element More like a bag of data elements, where you just know that the element is somewhere in the bag Also not like a List no duplicate values are allowed The Set collection is an implementation of the mathematical idea of a Set 2

3 Collections - Set The Set collection is an implementation of the mathematical idea of a Set { 10, 5, 8, 7, 3, 9 } Elements are not kept in any particular order No duplicate elements Same rules for the Set collection 3

4 Collections Set Sets rely on a few standard methods: Put an object into the Set: boolean add(e value) Remove an object from the Set boolean remove(e value) Check to see if the Set contains a value: boolean contains(e value) 4

5 Collections Set Set methods (cont): Return an iterator over the Set: Iterator<E> iterator() Get the number of elements in the Set: int size() Check to see if the Set is empty boolean isempty() 5

6 Collections - Set Like other collections, Java implements a number of different types of Sets Each useful under different circumstances We will talk about HashSets and TreeSets HashSets use a hash function to ensure uniqueness of elements TreeSets use a data structure known as a binary tree to ensure uniqueness of elements 6

7 Collections Set (HashSets) HashSet<String> Marley, Bob Cool, Joe Brown, Charles HashSet of names Elements are stored in no particular order No two names can be the same Hash function ensures uniqueness 7

8 Collections - Set Declaring a HashSet A HashSet of Strings: Set<String> myset = new HashSet<String>(); A HashSet of Integers: Set<Integer> myset = new HashSet<Integer>(); 8

9 Collections - Set Typical Set usage: Fill the Set with values Obtain an Iterator over the Set Process values from the Set until the Iterator has seen all the values 9

10 Collections - Iterators An iterator is an object that we can use to examine elements of a collection Anything that implements the Collection interface will provide an iterator Use iterators instead of counters in a while loop while loop: while (counter < list.size() ) { ; counter = counter + 1; } Iterator while (listiter.hasnext() ) { } 10

11 Collections - Iterators We obtain Iterator objects by calling the appropriate method on our Collection Anything that implements the Collection interface must provide a method named iterator that we can call to get an appropriate Iterator List<Integer> intlist = new ArrayList<Integer>(); Iterator<Integer> intiterator = intlist.iterator(); Set<Double> dblset = new HashSet<Double>(); Iterator<Double> dbliterator = dblset.iterator(); 11

12 Collections - Iterators Important methods Check to see if there are more elements in the iterator boolean hasnext() Get the next object off from the iterator E next() Remove the last object seen by the iterator from the ArrayList void remove() 12

13 Collections - Iterators Note that for a Set collection, we cannot use a typical while loop with a counter This works for Lists, because elements in Lists are stored sequentially, so the index has a meaning Elements in Sets are not stored in any particular order, so we cannot access them with an index The only way to see everything in a Set is to use an Iterator 13

14 Collections Set Iterator Example public static void main(string[] args) { Set<Integer> myints = new HashSet<Integer>(); for (int index=0; index<20; index++) { myints.add(index); // create a set of numbers 0-19 } Iterator<Integer> myiter = myints.iterator(); } while (myiter.hasnext()) { System.out.println(myIter.next()); } 14

15 Collections Set Iterator Example 2 public static void main(string[] args) { Set<String> myset = new HashSet<String>(); myset.add("marley, Bob"); myset.add("cool, Joe"); myset.add("brown, Charles"); System.out.println(mySet); } Iterator<String> myiter = myset.iterator(); while (myiter.hasnext()) { System.out.println(myIter.next()); } 15

16 Hashing and Hash Tables Recall: The HashSet class uses a hash function to implement a Set How does this work? Every object to be stored in a HashSet must have an associated hash function The hash function is a function that maps each object to a numeric value This numeric value provides an index for a bucket where elements with that numeric value are stored 16

17 Collections - HashSet Buckets Marley, Bob Cool, Joe Brown, Charles Cool, Joe Brown, Ch Marley, Bob HashSet of names Elements are stored in buckets Each bucket has an associated index value The element s hash function tells us which bucket to use When we need to find an element, just apply the hash function again Result tells us which bucket to look in 17

18 Collections - HashSet Buckets variants gelato variants What happens if two elements have the same hash function result? This is known as a collision In these cases, the HashSet first checks to see if they really are equal (using the objects equals() method). If they are not equal, then it must maintain both values at the same index 18

19 Collections - HashSet Buckets variants vari ge gelato What happens if two elements have the same hash function result? This is known as a collision In these cases, the HashSet first checks to see if they really are equal (using the objects equals() method). If they are not equal, then it must maintain both values at the same index One method: use a LinkedList of values for the buckets 19

20 Hashing User Defined Classes When we create our own classes, we need to provide a hash function for our objects The hashcode() method is inherited from the Object class Basic functionality if two objects have different memory locations, hashcode returns different values Two different new declarations, two different locations in memory If we want different behavior, we need to override both the hashcode method and the equals method 20

21 Hashing User Defined Classes How do we override the hashcode method? Look at what makes our objects equal Come up with a hashcode method based on that Student objects are equal if they have the same studentid So we can use the hashcode of our id member variable as our hashcode for the Student public int hashcode() { return id.hashcode(); } 21

22 Hashing User Defined Classes Sometimes we need to do more than just reuse an existing hash function Need to come up with our own functions As an example, the hash function for a String s is: int HASH_MULTIPLIER = 31; int h=0; for (int i=0; i<s.length(); i++) { h = HASH_MULTIPLIER*h + s.charat(i); } The hashcode value is a mathematical function of each character in the String s Similar operations can be written for our own classes 22

23 Hashing User Defined Classes equals() must also be properly implemented Two objects that are equal according to equals() must return the same value from hashcode() Two objects that are not equal according to equals() can have the same result from hashcode() but it should be avoided Strings, Integers, etc. all have hashcode and equals set up properly We need to ensure that our own classes have it as well. 23

24 Collections Set (TreeSets) TreeSet<String> Brown, Charles Cool, Joe Marley, Bob TreeSet of names Elements are stored in sorted order No two names can be the same Stored in a binary tree to ensure uniqueness 24

25 Collections Set (TreeSets) Declaring a TreeSet A TreeSet of Strings: Set<String> myset = new TreeSet<String>(); A TreeSet of Integers: Set<Integer> myset = new TreeSet<Integer>(); 25

26 Collections - TreeSet TreeSets use a binary tree to store elements A binary tree is a data structure with many applications in Computer Science Elements in a binary tree are stored in nodes Each node holds an element of data and references to two child nodes a right child and a left child In a binary search tree, nodes are kept in sorted order by always putting elements less than the current node in the left child, and elements larger than the current node in the right child. 26

27 Collections TreeSet (Binary Tree) An example: Suppose we have elements: {10, 3, 7, 19, 22, 1} to store in a binary search tree We add 10 first it becomes the head of the tree It s children are currently empty (null references) 10 27

28 Collections TreeSet (Binary Tree) {10, 3, 7, 19, 22, 1} Next we add the 3 It s less than 10, so it becomes the left-child of the head node

29 Collections TreeSet (Binary Tree) {10, 3, 7, 19, 22, 1} Next we add the 7 It s less than 10, so we go down the left path It s more than 3, so it becomes the right child of

30 Collections TreeSet (Binary Tree) {10, 3, 7, 19, 22, 1} 19 is greater than 10 It becomes the right child of

31 Collections TreeSet (Binary Tree) {10, 3, 7, 19, 22, 1} We add is greater than 10, so we go down the right path It is greater than 19, so it becomes the right child of

32 Collections TreeSet (Binary Tree) {10, 3, 7, 19, 22, 1} 10 Finally we add 1 1 is less than 10, so we go down the left path 3 19 It is less than 3, so it becomes the left child of

33 Collections TreeSet (Binary Tree) In the end, all of our elements are stored in the tree in sorted order Suppose we want to know if 6 is in our tree Follow the left branch to 3 then the right branch to and we see that 7 has no children so 6 cannot be in the tree Searching a binary tree is fast, if the tree is balanced 33

34 Collections TreeSet (Binary Tree) What do we mean by balanced? 10 Roughly, this means that each side of the tree contains the same number of nodes 3 19 Another way to think about it keeping the height of the tree small Unbalanced trees can cause problems 34

35 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then? 1 35

36 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then?

37 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then?

38 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then?

39 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then?

40 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then?

41 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then? One giant chain of nodes

42 Collections TreeSet (Binary Tree) Unbalanced trees Suppose we inserted elements in a different order {1,3,7,10,19,22} What would our tree look like then?

43 Collections TreeSet (Binary Trees) Why is an unbalanced tree a problem? Consider the two trees below How many steps does it take to find the number 22 in each of them? Which one is faster? 43

44 Collections - TreeSet Because balanced trees are so important for efficiency, TreeSet is actually built on a selfbalancing binary search tree A red-black binary tree structure Finding elements in the tree the same as a binary search tree Adding elements to the tree slightly more complex Must ensure that the tree remains balanced Worth it, because algorithm gives us balanced trees regardless of the order we insert elements in 44

45 Your Turn - Trees Provide the binary search tree that would result if the following integers were added to the tree in the given order: [ 8, 3, 23, 15, 1, 5, 42, 64, 36 ] Provide the binary search tree that would result if the following characters were added in the given order: [ r, q, z, a, c, l, x, w, b ] 45

46 Collections TreeSet Example public static void main(string[] args) { Set<Integer> myints = new TreeSet<Integer>(); for (int index=0; index<20; index++) { myints.add(index); // create a set of numbers 0-19 } Iterator<Integer> myiter = myints.iterator(); } while (myiter.hasnext()) { System.out.println(myIter.next()); } 46

47 Collections TreeSet Example 2 public static void main(string[] args) { Set<String> myset = new TreeSet<String>(); myset.add("marley, Bob"); myset.add("cool, Joe"); myset.add("brown, Charles"); System.out.println(mySet); } Iterator<String> myiter = myset.iterator(); while (myiter.hasnext()) { System.out.println(myIter.next()); } 47

48 TreeSet User Defined Classes Binary trees depend on the ordering of elements to be added to them So if we want to use a TreeSet, the elements we add to it must have an ordering How do we ensure this? Any object we put in a TreeSet must have some way to compare it with other objects in the Set So for any class that we want to use in a TreeSet, we should implement the Comparable interface Strings, Characters, Integers, etc. all have this built in We need to ensure our own classes have this functionality if we need it 48

49 HashSet vs. TreeSet If we need a Set, what kind of Set should we use? If we need the Set to iterate in sorted order, we should use a TreeSet Otherwise, we should use a HashSet HashSet allows us to add and remove elements from the Set in constant time the time it takes to add and remove elements is independent of the number of elements in the Set TreeSet uses log(n) time to add and remove elements from the Set. Fast, but dependent on the number of elements in our Collection 49

CSE 2123: Collections: Maps. Jeremy Morris

CSE 2123: Collections: Maps Jeremy Morris 1 Collections - Map A map is another kind of collection Different from previously discussed examples Lists, Queues, Stacks are all linear collections Some meaning

Data Structures in the Java API

Data Structures in the Java API Vector From the java.util package. Vectors can resize themselves dynamically. Inserting elements into a Vector whose current size is less than its capacity is a relatively

Building Java Programs

Building Java Programs Iterators, hashing reading: 11.1, 15.3 Making hash browns... (We're talking about hashing. It makes sense.) 2 List Case Study 3 Linked list performance The following code is particularly

CS 210 Algorithms and Data Structures College of Information Technology and Engineering Weisberg Division of Engineering and Computer Science

CS 210 Algorithms and Data Structures College of Information Technology and Engineering Weisberg Division of Engineering and Computer Science Semester and Year: Spring 2009 Classroom Section, Meeting Times,

Java Class Library. Java the platform contains around 4,000 classes/interfaces

Java Class Library Java the platform contains around 4,000 classes/interfaces Data Structures Networking, Files Graphical User Interfaces Security and Encryption Image Processing Multimedia authoring/playback

The Java Collections Framework

The Java Collections Framework Definition Set of interfaces, abstract and concrete classes that define common abstract data types in Java e.g. list, stack, queue, set, map Part of the java.util package

Collections in Java. Arrays. Iterators. Collections (also called containers) Has special language support. Iterator (i) Collection (i) Set (i),

Arrays Has special language support Iterators Collections in Java Iterator (i) Collections (also called containers) Collection (i) Set (i), HashSet (c), TreeSet (c) List (i), ArrayList (c), LinkedList

Class 32: The Java Collections Framework

Introduction to Computation and Problem Solving Class 32: The Java Collections Framework Prof. Steven R. Lerman and Dr. V. Judson Harward Goals To introduce you to the data structure classes that come

Symbol Tables. Introduction

Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The

Java Collections Framework. 21 July 2016 OSU CSE 1

Java Collections Framework 21 July 2016 OSU CSE 1 Overview The Java Collections Framework (JCF) is a group of interfaces and classes similar to the OSU CSE components The similarities will become clearly

LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference

Generic Containers and Iterators in Java

Generic Containers and Iterators in Java Motivation containers are objects that store an arbitrary number of other objects these containers are manipulated by iterating over the contents virtually any

Java Map and Set collections

Java Map and Set collections Java Set container idea interface Java Map container idea interface iterator concordance example Java maps and sets [Bono] 1 Announcements Lab this week based on an example

Searching & Sorting. Searching & Sorting 1

Searching & Sorting Searching & Sorting 1 The Plan Searching Sorting Java Context Searching & Sorting 2 Search (Retrieval) Looking it up One of most fundamental operations Without computer Indexes Tables

Object Oriented Design with UML and Java Part VII: Java Collection Classes

Object Oriented Design with UML and Java Part VII: Java Collection Classes Copyright David Leberknight and Ron LeMaster. Version 2011 Collection Classes A collection is a grouping of objects, usually of

Class 28: Binary Search Trees. Binary Search Trees

Introduction to Computation and Problem Solving Class 2: Binary Search Trees Prof. Steven R. Lerman and Dr. V. Judson Harward Binary Search Trees In the previous lecture, we defined the concept of binary

Working with Java Collections

Working with Java Collections Java 2 Collections Lists - linear, supporting many operations Sets - unordered, unique items Sorted sets - like sets, but items can be visited in sorted order Java 2 Collections

API for java.util.iterator. ! hasnext() Are there more items in the list? ! next() Return the next item in the list.

Sequences and Urns 2.7 Lists and Iterators Sequence. Ordered collection of items. Key operations. Insert an item, iterate over the items. Design challenge. Support iteration by client, without revealing

Symbol Tables. IE 496 Lecture 13

Symbol Tables IE 496 Lecture 13 Reading for This Lecture Horowitz and Sahni, Chapter 2 Symbol Tables and Dictionaries A symbol table is a data structure for storing a list of items, each with a key and

! Insert a value with specified key. ! Search for value given key. ! Delete value with given key. ! O(log N) time per op.

Symbol Table Review 4.4 Balanced Trees Symbol table: key-value pair abstraction.! a value with specified key.! for value given key.! value with given key. Randomized BST.! O(log ) time per op. unless you

CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions

CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly

Java Collections Framework

Java Collections Framework This article is part of Marcus Biel s free Java course focusing on clean code principles. In this piece, you will be given a high-level introduction of the Java Collections Framework

Sorting revisited. Build the binary search tree: O(n^2) Traverse the binary tree: O(n) Total: O(n^2) + O(n) = O(n^2)

Sorting revisited How did we use a binary search tree to sort an array of elements? Tree Sort Algorithm Given: An array of elements to sort 1. Build a binary search tree out of the elements 2. Traverse

While the representation for the collections differs between the implementations, the items in the collections are of the same type

Iterator Pattern: Motivation Suppose you have two classes, each of which implements a collection of items of some sort Sample code: public class RepOne { ArrayList itemlist; public RepOne () { itemlist

CS11 Java. Spring Lecture 2

CS11 Java Spring 2011-2012 Lecture 2 Today s Topics n Packages n Interfaces n Collection classes Java Packages n Classes can be grouped into packages A package is a collection of related types n Packages

Datastrukturer och standardalgoritmer i Java

1 (8) Datastrukturer och standardalgoritmer i Java Dokumentet listar ett urval av konstruktorer och metoder för några vanliga Javaklasser. Class ArrayList ArrayList() Constructs an empty list. void

Hash Tables. Computer Science E-119 Harvard Extension School Fall 2012 David G. Sullivan, Ph.D. Data Dictionary Revisited

Hash Tables Computer Science E-119 Harvard Extension School Fall 2012 David G. Sullivan, Ph.D. Data Dictionary Revisited We ve considered several data structures that allow us to store and search for data

1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated

SEARCHING AND SORTING

SEARCHING AND SORTING Searching A basic operation in computer science Problem formulation Given: Collection (array) of values A property on values Find: a value having the property in the array Examples

Why Use Binary Trees?

Binary Search Trees Why Use Binary Trees? Searches are an important application. What other searches have we considered? brute force search (with array or linked list) O(N) binarysearch with a pre-sorted

Masters programmes in Computer Science and Information Systems. Object-Oriented Design and Programming. Sample module entry test xxth December 2013

Masters programmes in Computer Science and Information Systems Object-Oriented Design and Programming Sample module entry test xxth December 2013 This sample paper has more questions than the real paper

Data Structures in Java. Session 15 Instructor: Bert Huang http://www1.cs.columbia.edu/~bert/courses/3134

Data Structures in Java Session 15 Instructor: Bert Huang http://www1.cs.columbia.edu/~bert/courses/3134 Announcements Homework 4 on website No class on Tuesday Midterm grades almost done Review Indexing

Basic Programming and PC Skills: Basic Programming and PC Skills:

Texas University Interscholastic League Contest Event: Computer Science The contest challenges high school students to gain an understanding of the significance of computation as well as the details of

CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015

CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis Linda Shapiro Today Registration should be done. Homework 1 due 11:59 pm next Wednesday, January 14 Review math essential

14/05/2013 Ed Merks EDL V1.0 1

14/05/2013 Ed Merks EDL V1.0 1 Java Performance is Complex Write once run everywhere Java is slow because it s interpreted No, there are Just In Time (JIT) compilers Different hardware and platforms Different

http://algs4.cs.princeton.edu dictionary find definition word definition book index find relevant pages term list of page numbers

ROBERT SEDGEWICK KEVI WAYE F O U R T H E D I T I O ROBERT SEDGEWICK KEVI WAYE ROBERT SEDGEWICK KEVI WAYE Symbol tables Symbol table applications Key-value pair abstraction. Insert a value with specified.

Section: Copying Java Objects

Section: Copying Java Objects Cloning I Sometimes we really do want to copy an Person (name = Bob ) Person (name = Bob ) Person (name = Bob ) r r r_copy Java calls this cloning We need special support

A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:

Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)

D06 PROGRAMMING with JAVA

Cicles Formatius de Grau Superior Desenvolupament d Aplicacions Informàtiques D06 PROGRAMMING with JAVA Ch20 Data Structures I PowerPoint presentation, created by Angel A. Juan - ajuanp(@)gmail.com, for

CSC 421: Algorithm Design Analysis. Spring 2014

CSC 421: Algorithm esign Analysis Spring 2014 Transform & conquer transform-and-conquer approach presorting balanced search trees, heaps Horner's Rule problem reduction 1 Transform & conquer the idea behind

Merge Sort. 2004 Goodrich, Tamassia. Merge Sort 1

Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Merge Sort 1 Divide-and-Conquer Divide-and conquer is a general algorithm design paradigm: Divide: divide the input data S in two disjoint subsets

Arrays. Atul Prakash Readings: Chapter 10, Downey Sun s Java tutorial on Arrays: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.

Arrays Atul Prakash Readings: Chapter 10, Downey Sun s Java tutorial on Arrays: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html 1 Grid in Assignment 2 How do you represent the state

Binary Search Trees. Yes! So, a binary tree T is a binary search tree if T is a single node.

Which are Binary Search Trees (BST)? Binary Search Trees So, a binary tree T is a binary search tree if T is a single node. Yes! No! All the values on the left subtree must be less than the value at the

Lecture 6. Randomized data structures Random number generation Skip lists: ideas and implementation Skip list time costs. Reading:

Lecture 6 Randomized data structures Random number generation Skip lists: ideas and implementation Skip list time costs Reading: Skip Lists: A Probabilistic Alternative to Balanced Trees (author William

Ordered Lists and Binary Trees

Data Structures and Algorithms Ordered Lists and Binary Trees Chris Brooks Department of Computer Science University of San Francisco Department of Computer Science University of San Francisco p.1/62 6-0:

cs2010: algorithms and data structures

cs2010: algorithms and data structures Lecture 11: Symbol Table ADT. Vasileios Koutavas 28 Oct 2015 School of Computer Science and Statistics Trinity College Dublin Algorithms ROBERT SEDGEWICK KEVIN WAYNE

Data storage Tree indexes

Data storage Tree indexes Rasmus Pagh February 7 lecture 1 Access paths For many database queries and updates, only a small fraction of the data needs to be accessed. Extreme examples are looking or updating

CS112 Lecture: Searching and Sorting

CS112 Lecture: Searching and Sorting Objectives: 1. To introduce the linear search algorithm. 2. To introduce the binary search algorithm. 3. To show superiority of O(log n) vs O(n) 4. To take note of

CMSC 202H. ArrayList, Multidimensional Arrays

CMSC 202H ArrayList, Multidimensional Arrays What s an Array List ArrayList is a class in the standard Java libraries that can hold any type of object an object that can grow and shrink while your program

Collections and Data Structures. array vs ArrayList. Using a collection or ADT

Collections and Data Structures CMPT 126: Lecture 11 Collections: Abstract Data Types and Dynamic Representation (Chapt. 12) Tamara Smyth, tamaras@cs.sfu.ca School of Computing Science, Simon Fraser University

A Comparison of Dictionary Implementations

A Comparison of Dictionary Implementations Mark P Neyer April 10, 2009 1 Introduction A common problem in computer science is the representation of a mapping between two sets. A mapping f : A B is a function

DATA STRUCTURES USING C

DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give

C++ How to Program, 8/e 1992-2012 by Pearson Education, Inc. 1992-2012 by Pearson Education, Inc. 1992-2012 by Pearson Education, Inc. We ve studied fixed-size data structures such as one-dimensional arrays

Topic 15. The Binary Search Tree ADT

Topic 15 The Binary Search Tree ADT Binary Search Tree A binary search tree (BST) is a binary tree with an ordering property of its elements, such that the data in any internal node is Greater than the

7.1 Our Current Model

Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.

Binary Heaps * * * * * * * / / \ / \ / \ / \ / \ * * * * * * * * * * * / / \ / \ / / \ / \ * * * * * * * * * *

Binary Heaps A binary heap is another data structure. It implements a priority queue. Priority Queue has the following operations: isempty add (with priority) remove (highest priority) peek (at highest

Binary Heap Algorithms

CS Data Structures and Algorithms Lecture Slides Wednesday, April 5, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005 2009 Glenn G. Chappell

Software Engineering II. Java 2 Collections. Bartosz Walter <Bartek.Walter@man.poznan.pl>

Software Engineering II Java 2 Collections Bartosz Walter Agenda 1. Basic interfaces: Collection, Set, List, Map 2. Iterators 3. Utility classes for Collections and Arrays

Generic Types in Java. Example. Another Example. Type Casting. An Aside: Autoboxing 4/16/2013 GENERIC TYPES AND THE JAVA COLLECTIONS FRAMEWORK.

Generic Types in Java 2 GENERIC TYPES AND THE JAVA COLLECTIONS FRAMEWORK Lecture 15 CS2110 Spring 2013 When using a collection (e.g., LinkedList, HashSet, HashMap), we generally have a single type T of

Binary Search Trees and Hash Tables

CHAPTER 7 Binary Search Trees and Hash Tables 7.1 Binary Search Trees In Chapter, we introduced containers called a priority queues and dictionaries. A priority queue is a dispenser in which the current

Motivating Quotation

Data Structures 1 Motivating Quotation Every program depends on algorithms and data structures, but few programs depend on the invention of brand new ones. -- Kernighan & Pike 2 Programming in the Large

2 Exercises and Solutions

2 Exercises and Solutions Most of the exercises below have solutions but you should try first to solve them. Each subsection with solutions is after the corresponding subsection with exercises. 2.1 Sorting

Data Structures and Algorithms

Data Structures and Algorithms CS245-2016S-06 Binary Search Trees David Galles Department of Computer Science University of San Francisco 06-0: Ordered List ADT Operations: Insert an element in the list

Priority Queues. Client, Implementation, Interface. Priority Queues. Abstract Data Types

Client, Implementation, Interface Priority Queues Priority Queue ADT Binary heaps Heapsort Reference: Chapter 6, Algorithms in Java, 3 rd Edition, Robert Sedgewick. Separate interface and implementation

Java Software Structures

INTERNATIONAL EDITION Java Software Structures Designing and Using Data Structures FOURTH EDITION John Lewis Joseph Chase This page is intentionally left blank. Java Software Structures,International Edition

AP Computer Science Java Mr. Clausen Program 9A, 9B

AP Computer Science Java Mr. Clausen Program 9A, 9B PROGRAM 9A I m_sort_of_searching (20 points now, 60 points when all parts are finished) The purpose of this project is to set up a program that will

STORM. Simulation TOol for Real-time Multiprocessor scheduling. Designer Guide V3.3.1 September 2009

STORM Simulation TOol for Real-time Multiprocessor scheduling Designer Guide V3.3.1 September 2009 Richard Urunuela, Anne-Marie Déplanche, Yvon Trinquet This work is part of the project PHERMA supported

More sophisticated behaviour

Objects First With Java A Practical Introduction Using BlueJ More sophisticated behaviour Using library classes to implement some more advanced functionality 2.0 Main concepts to be covered Using library

Data Structures and Algorithms Binary Search Trees

Data Structures and Algorithms Binary Search Trees Chris Brooks Department of Computer Science University of San Francisco Department of Computer Science University of San Francisco p.1/34 To find the

Software Engineering Techniques

Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary

Big O and Limits Abstract Data Types Data Structure Grand Tour. http://gcc.gnu.org/onlinedocs/libstdc++/images/pbds_different_underlying_dss_1.

Big O and Limits Abstract Data Types Data Structure Grand Tour http://gcc.gnu.org/onlinedocs/libstdc++/images/pbds_different_underlying_dss_1.png Consider the limit lim n f ( n) g ( n ) What does it

CPS211 Lecture: Representing Associations in Java; Collection

CPS211 Lecture: Representing Associations in Java; Collection Objectives: Last revised July 24, 2008 1. To show how associations can be represented by references 2. To show how associations can be represented

The Tower of Hanoi. Recursion Solution. Recursive Function. Time Complexity. Recursive Thinking. Why Recursion? n! = n* (n-1)!

The Tower of Hanoi Recursion Solution recursion recursion recursion Recursive Thinking: ignore everything but the bottom disk. 1 2 Recursive Function Time Complexity Hanoi (n, src, dest, temp): If (n >

Zabin Visram Room CS115 CS126 Searching. Binary Search

Zabin Visram Room CS115 CS126 Searching Binary Search Binary Search Sequential search is not efficient for large lists as it searches half the list, on average Another search algorithm Binary search Very

Algorithms. Theresa Migler-VonDollen CMPS 5P

Algorithms Theresa Migler-VonDollen CMPS 5P 1 / 32 Algorithms Write a Python function that accepts a list of numbers and a number, x. If x is in the list, the function returns the position in the list

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) 3 4 4 7 5 9 6 16 7 8 8 4 9 8 10 4 Total 92.

Name: Email ID: CSE 326, Data Structures Section: Sample Final Exam Instructions: The exam is closed book, closed notes. Unless otherwise stated, N denotes the number of elements in the data structure

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,

Chapter 8: Bags and Sets

Chapter 8: Bags and Sets In the stack and the queue abstractions, the order that elements are placed into the container is important, because the order elements are removed is related to the order in which

Java Coding Practices for Improved Application Performance

1 Java Coding Practices for Improved Application Performance Lloyd Hagemo Senior Director Application Infrastructure Management Group Candle Corporation In the beginning, Java became the language of the

Introduction to Java

Introduction to Java The HelloWorld program Primitive data types Assignment and arithmetic operations User input Conditional statements Looping Arrays CSA0011 Matthew Xuereb 2008 1 Java Overview A high

Analysis of a Search Algorithm

CSE 326 Lecture 4: Lists and Stacks 1. Agfgd 2. Dgsdsfd 3. Hdffdsf 4. Sdfgsfdg 5. Tefsdgass We will review: Analysis: Searching a sorted array (from last time) List ADT: Insert, Delete, Find, First, Kth,

More sophisticated behaviour

Objects First With Java A Practical Introduction Using BlueJ More sophisticated behaviour Using library classes to implement some more advanced functionality 2.0 Main concepts to be covered Using library

What is Java collections. Java Collections. Interface hierarchy. What is Java collections 12/5/2011. G52APR Application Programming

G52APR Application Programming Java Collections What is Java collections A collection is an object that represents a group of objects Michael Li http://www.cs.nott.ac.uk/~jwl/g52apr.html 2 Interface hierarchy

File System Management

Lecture 7: Storage Management File System Management Contents Non volatile memory Tape, HDD, SSD Files & File System Interface Directories & their Organization File System Implementation Disk Space Allocation

Collections and Iterators. Giuseppe Narzisi V Spring 2009

Collections and Iterators Giuseppe Narzisi V22.0102 003 Spring 2009 Definition Defini9on of Collec9on: Group of objects, which are also called elements May allow duplicates and requires no specific ordering

Chapter Objectives. Chapter 9. Sequential Search. Search Algorithms. Search Algorithms. Binary Search

Chapter Objectives Chapter 9 Search Algorithms Data Structures Using C++ 1 Learn the various search algorithms Explore how to implement the sequential and binary search algorithms Discover how the sequential

CompSci-61B, Data Structures Final Exam

Your Name: CompSci-61B, Data Structures Final Exam Your 8-digit Student ID: Your CS61B Class Account Login: This is a final test for mastery of the material covered in our labs, lectures, and readings.

Multi-Way Search Trees (B Trees)

Multi-Way Search Trees (B Trees) Multiway Search Trees An m-way search tree is a tree in which, for some integer m called the order of the tree, each node has at most m children. If n

4.3 Stacks and Queues. Pushdown Stacks. Data Structures and Data Types. Collections

Data Structures and Data Types 4.3 Stacks and Queues Data types Set values. Set operations on those values. Some are built in to Java: int, double, char,... Most are not: Complex, Picture, Charge, Stack,

Computer Programming I

Computer Programming I COP 2210 Syllabus Spring Semester 2012 Instructor: Greg Shaw Office: ECS 313 (Engineering and Computer Science Bldg) Office Hours: Tuesday: 2:50 4:50, 7:45 8:30 Thursday: 2:50 4:50,

Definition. E.g. : Attempting to represent a transport link data with a tree structure:

The ADT Graph Recall the ADT binary tree: a tree structure used mainly to represent 1 to 2 relations, i.e. each item has at most two immediate successors. Limitations of tree structures: an item in a tree

From Java Code to Java Heap Understanding the Memory Usage of Your Application

Paul Cheeseman IBM Java L3 Service Engineer From Java Code to Java Heap Understanding the Memory Usage of Your Application 2011 IBM Corporation Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION

Introduction to Programming System Design. CSCI 455x (4 Units)

Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,

22c:31 Algorithms. Ch3: Data Structures. Hantao Zhang Computer Science Department http://www.cs.uiowa.edu/~hzhang/c31/

22c:31 Algorithms Ch3: Data Structures Hantao Zhang Computer Science Department http://www.cs.uiowa.edu/~hzhang/c31/ Linear Data Structures Now we can now explore some convenient techniques for organizing

Efficient Data Structures for Decision Diagrams

Artificial Intelligence Laboratory Efficient Data Structures for Decision Diagrams Master Thesis Nacereddine Ouaret Professor: Supervisors: Boi Faltings Thomas Léauté Radoslaw Szymanek Contents Introduction...

6 March 2007 1. Array Implementation of Binary Trees

Heaps CSE 0 Winter 00 March 00 1 Array Implementation of Binary Trees Each node v is stored at index i defined as follows: If v is the root, i = 1 The left child of v is in position i The right child of

Searching and Hashing

Searching and Hashing Sequential Search Property: Sequential search (array implementation) uses N+1 comparisons for an unsuccessful search (always). Unsuccessful Search: (n) Successful Search: item is

CSE 143 Lecture 20. Binary Search Trees. read slides created by Marty Stepp

CSE 143 Lecture 20 Binary Search Trees read 17.3 slides created by Marty Stepp http://www.cs.washington.edu/143/ Binary search trees binary search tree ("BST"): a binary tree that is either: empty (null),