csc 212 – data structures
DESCRIPTION
CSC 212 – Data Structures. Lecture 31: Last Word On Dictionaries. Problem of the Day. What is the smallest positive integer that cannot be defined in less than twenty-five syllables?. What is the smallest positive integer that cannot be defined in less than twenty-five syllables ? - PowerPoint PPT PresentationTRANSCRIPT
CSC 212 –Data Structures
Lecture 31:
Last Word On Dictionaries
Problem of the Day
What is the smallest positive integer that cannot be defined in less than twenty-five syllables?
What is the smallest positive integer that cannot be defined in less than twenty-five syllables?
The highlighted phrase has fewer than 25 syllables, so this cannot exist!
Comparing Data Items
Ordering entries means comparing keys Comparison depends on key’s type
Use <, >, == for numeric dataUse compareTo() for StringsWhat about Car, IMClient, or Prof instances?
Want abstract approach to this problemNo OrderedDictionary class for each key type
Comparator ADT
Implements a total order relationObjects less than, equal to, or greater thanFollows rule that if a > b & b > c, then a > c
Comparator’s methods are abstract Implementation is specific to key typeBut still independent of the key class
Can reweight keys by changing how comparator orders them
Comparator Interface
public interface Comparator<E> { public int compare(E x, E y);}public class StrComp implements Comparator<String> { public int compare(String x, String y){ return(x.compareTo(y));
}}
Returns integer < 0 when x < y 0 when x == y
> 0 when x > y
Ordered Dictionaries
Ordered dictionary constructor includes Comparator parameter Now works with any type of key!
Can rewrite binary search more abstractly as:if (c.compare(key, table[m].getKey()) > 0) { l = m + 1;} else if (c.compare(key, table[m].getKey()) < 0) { h = m - 1;} else { return m;}
Ordered Dictionary
Key feature of ordered dictionary: they maintain entries in orderCan be a performance win (faster searching)But can also be an important feature
Think of how first use a dictionary:Q: “Mom, how do I spell _______?”A: “Look it up.”
Cannot do this with Dictionary ADT
Ordered Dictionary Interface
public interface OrderedDictionary<K,V> extends Dictionary<K,V> { public Entry<K,V> first(); // Entry with smallest key public Entry<K,V> last(); // Entry with largest key public Iterator<Entry<K,V>> successors(K k); public Iterator<Entry<K,V>> predecessors(K k);
}
Includes all methods in Dictionary Includes first() & last() methodssuccessors() iterates over larger keyspredecessors() iterates through smaller keysMay not include entries with the key k
Writing an Ordered Dictionary
public class ODict<K,V> implements... {private IndexList<Entry<K,V>> table;private Comparator<K> comp;
public Entry<K,V> first() throws EmptyDictionaryException { try { return table.get(0); } catch (NoSuchElementException e) { throw EmptyDictionaryException(“Dummkopf.”); }
}
Writing an Ordered Dictionary
public Iterator<Entry<K,V>> successors(K k) {IteratorClass<Entry<K,V>> retVal = new ...; int rank = binSearch(k);while (rank < table.size()) { if (comp.compare(k, table.get(rank).getKey)==0) { rank++; } else { break; }}for (; rank < table.size(); rank++) { retVal.addLast(table.get(rank));}return retVal;
}
Why Should We Care?
We often care about ordering dataPricesSchedulesQPAsNumber of watts consumedProcessor speed
Your Turn
Get back into groups and do activity
Before Next Lecture…
Keep up with your reading!Cannot stress this enough
Finish Week #12 Assignment Start Programming Assignment #4 Prepare for Midterm #2 next Monday
Will also be open book, open noteCovers from last midterm through this week