13 a: external algorithms ii; disjoint sets; java api supportcs1102s/slides/slides_13_a.bw.pdf ·...
TRANSCRIPT
![Page 1: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/1.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
13 A: External Algorithms II; Disjoint Sets;Java API Support
CS1102S: Data Structures and Algorithms
Martin Henz
April 15, 2009
Generated on Friday 17th April, 2009, 12:37CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support1
![Page 2: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/2.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
1 External Sorting
2 Disjoint Sets
3 Java API Support for Data Structures
4 Puzzlers
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support2
![Page 3: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/3.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Model for External SortingThe Simple AlgorithmMultiway Merge
1 External SortingModel for External SortingThe Simple AlgorithmMultiway Merge
2 Disjoint Sets
3 Java API Support for Data Structures
4 Puzzlers
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support3
![Page 4: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/4.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Model for External SortingThe Simple AlgorithmMultiway Merge
Tapes as Storage
Similar to disks
Access time many orders of magnitude slower than mainmemory
Additional characteristics
Large amounts of data can be read sequentially quite efficiently
Access of previous locations
is extremely slow, as it requires re-winding the tape!
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support4
![Page 5: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/5.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Model for External SortingThe Simple AlgorithmMultiway Merge
External Sorting
Main idea
Use tapes sequentially, and read one block from each inputtape tape
Merge blocks
Sort the blocksUse merge procedure from mergesort to merge
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support5
![Page 6: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/6.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Model for External SortingThe Simple AlgorithmMultiway Merge
The Simple Algorithm: Overview
Four tapes
Two input tapes; two output tapes
Read and write runs
Read runs from input tape, sort them and write alternatively tooutput tapes
Continue, writing larger runs
Read two runs from each “output” tape, and merge them on thefly, writing alternatively to “input” tapes
Continue
until one tape has all sorted dataCS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support6
![Page 7: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/7.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Model for External SortingThe Simple AlgorithmMultiway Merge
Multiway Merge
Why only four tapes?
If we have more than four tapes, we can take advantage ofthem by using multiway merge
How finding the smallest element during merge?
Priority queue!
Each iteration of inner loop
deleteMin to find smallest elementinsert new element from tape from which element was deleted
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support7
![Page 8: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/8.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Model for External SortingThe Simple AlgorithmMultiway Merge
Polyphase Merge and Replacement Selection
Polyphase merge: main idea
Make use of fewer tapes, by re-using tapes for reading andwritingLeading to tape organization using k th order Fibonaccinumbers
Replacement selection: main idea
Make use of input tape as output tape, reusing the tapes “onthe fly”
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support8
![Page 9: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/9.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
1 External Sorting
2 Disjoint SetsEquivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariantsApplications
3 Java API Support for Data Structures
4 Puzzlers
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support9
![Page 10: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/10.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Equivalence Relations
Definition
An equivalence relation is a relation R that satisfies threeproperties:
1 (Reflexive) aRa, for all a ∈ S.2 (Symmetric) aRb if and only if bRa.3 (Transitive) aRb and bRc implies aRc.
Examples
Electrical connectivity (metal wires between points)
Cities belonging to same country
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support10
![Page 11: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/11.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
The Dynamic Equivalence Problem
Initial setup
Collection of N disjoint sets, each with one element
Operations
find(a): return the set of which x is element
union(a, b): merge the sets to which a and b belong, sothat find(a) = find(b)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support11
![Page 12: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/12.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Strategies
Fast Find, Slow Union
Use array repres to store equivalence class for each element
find(a): return repres[a]
union(a, b): if repres[x ] = repres[b] then set repres[x ] torepres[a]
Fast Union, Reasonable Find
Union/find data structure
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support12
![Page 13: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/13.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Basic Data Structure
Idea
Maintain forest corresponding to equivalence relation
Union
Merge trees
Find
Return root of tree
Observe
Only upward direction needed!
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support13
![Page 14: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/14.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Example
Initial setup:
After union(4, 5)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support14
![Page 15: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/15.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Example
After union(4, 5)
After union(6, 7)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support15
![Page 16: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/16.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Example
After union(6, 7)
After union(4, 6)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support16
![Page 17: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/17.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Representation
Idea
Remember parent node only; mark root with −1
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support17
![Page 18: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/18.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Variants
Problem
How to choose root for union? Bad choice can lead to longpaths
Union-by-size
Always make the smaller tree a subtree of the larger tree
Analysis
When depth increases, the tree is smaller than the other side.Thus, after union, it is at least twice as large.
Height
less than or equal to log NCS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support18
![Page 19: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/19.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Variants
Union-by-height
Always make the shorter tree a subtree of the higher tree
Height
As with union-by-size: O(log N)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support19
![Page 20: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/20.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Path Compression
During find make every node point to root
after find(14)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support20
![Page 21: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/21.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
A Very Slowly Growing Function
Definition
log∗ N is the number of times log needs to be applied to N untilN ≤ 1.
Examples
log∗ 2 = 1
log∗ 4 = 2
log∗ 16 = 3
log∗ 65536 = 4
...
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support21
![Page 22: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/22.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Equivalence RelationsThe Dynamic Equivalence ProblemBasic Data StructureVariants
Runtime
Consider variant
Union-by-height combined with path compression
Theorem
The running time of M unions and finds is O(M log∗ N).
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support22
![Page 23: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/23.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
1 External Sorting
2 Disjoint Sets
3 Java API Support for Data StructuresCollections, Lists, IteratorsTreesHashingPriorityQueueSorting
4 Puzzlers
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support23
![Page 24: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/24.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
The Top-level Collection Interface
public inter face Co l l ec t i on <Any>extends I t e r a b l e <Any>
{i n t s ize ( ) ;boolean isEmpty ( ) ;void c l ea r ( ) ;boolean conta ins ( Any x ) ;boolean add ( Any x ) ; / / s i cboolean remove ( Any x ) ; / / s i cjava . u t i l . I t e r a t o r <Any> i t e r a t o r ( ) ;
}
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support24
![Page 25: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/25.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
The List Interface in Collection API
public inter face L i s t <Any>extends Co l l ec t i on <Any>
{Any get ( i n t i dx ) ;Any set ( i n t idx , Any newVal ) ;void add ( i n t idx , Any x ) ;void remove ( i n t i dx ) ;
L i s t I t e r a t o r <Any> l i s t I t e r a t o r ( i n t pos ) ;}
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support25
![Page 26: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/26.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
ArrayList and LinkedList
public class Ar rayL i s t <Any>implements L i s t <Any> { . . . }
public class L inkedL is t <Any>implements L i s t <Any> { . . . }
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support26
![Page 27: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/27.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
Iterators
public inter face I t e r a t o r <Any> {boolean hasNext ( ) ;Any next ( ) ;void remove ( ) ;
}
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support27
![Page 28: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/28.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
ListIterators
public inter face L i s t I t e r a t o r <Any>extends I t e r a t o r <Any>
{boolean hasPrevious ( ) ;Any prev ious ( ) ;void add ( Any x ) ;void set ( Any newVal ) ;
}
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support28
![Page 29: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/29.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
TreeSet
Implements Collection
Guarantees O(log N) time for add, remove and contains
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support29
![Page 30: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/30.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
AbstractMap<K,V>
Basic operations
V get(K key): Returns the value to which the specified keyis mapped.
V put(K key, V value): Associates the specified value withthe specified key in this map.
Other operations
containsKey(key), containsValue(val), remove(key)
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support30
![Page 31: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/31.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
TreeMap
Extends AbstractMap
Guarantees O(log N) time for put, get, containsKey,containsValue, remove
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support31
![Page 32: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/32.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
HashMap
Extends AbstractMap
Uses separate chaining with rehashing
Rehashing is governed by initial capacity and load factor,set in constructor
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support32
![Page 33: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/33.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
HashSet
Implements Collection using HashMap
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support33
![Page 34: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/34.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
PriorityQueue
Implements Collection
Efficient implementation of heap data structureOperation names:
deleteMin is called “poll”insert is called “add”
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support34
![Page 35: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/35.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Collections, Lists, IteratorsTreesHashingPriorityQueueSorting
Sorting
Generic sorting supported by class Collections
Uses mergesort in order to minimize number ofcomparisons
Sorting of built-in numerical types supported by classArrays
Uses efficient implementation of quicksort, to takeadvantage of tight inner loop.
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support35
![Page 36: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/36.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
1 External Sorting
2 Disjoint Sets
3 Java API Support for Data Structures
4 Puzzlers
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support36
![Page 37: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/37.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Last Puzzler: Package Deal
package c l i c k ;public class CodeTalk {
public void d o I t ( ) {printMessage ( ) ;
}void printMessage ( ) {
System . out . p r i n t l n ( ” C l i c k ” ) ;} }
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support37
![Page 38: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/38.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Last Puzzler: Package Deal
package hack ;import c l i c k . CodeTalk ;public class TypeI t {
private s t a t i c class C l i c k I t extends CodeTalk {void printMessage ( ) {
System . out . p r i n t l n ( ” Hack ” ) ;} }public s t a t i c void main ( S t r i n g [ ] args ) {
C l i c k I t c l i c k i t = new C l i c k I t ( ) ;c l i c k i t . d o I t ( ) ;
} }
What does clickit . doIt () print? “Click” or “Hack”?
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support38
![Page 39: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/39.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Java’s Access Modifiers
public : available wherever the class is available
private : only available within the class
protected : available in subclasses and within same package
none : available within the same package
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support39
![Page 40: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/40.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
Access Modifiers Govern Inheritance
Overriding only available methods
A method can be overridden only when it is available accordingto the modifier rules.
Package visibility
Method printMessage can only be overridden within packageclick .
Result
”Click” is printed.
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support40
![Page 41: 13 A: External Algorithms II; Disjoint Sets; Java API Supportcs1102s/slides/slides_13_A.bw.pdf · 13 A: External Algorithms II; Disjoint Sets; ... Polyphase Merge and Replacement](https://reader031.vdocuments.mx/reader031/viewer/2022030401/5a75bf007f8b9aea3e8cbd9e/html5/thumbnails/41.jpg)
External SortingDisjoint Sets
Java API Support for Data StructuresPuzzlers
This Week and Beyond
Thursday tutorial: Assignment 9
Friday lecture: CS1102S summary, outlook; questions?
Next week: Reading week, consultation by appointment
27/4 and 28/4: no consultation
29/4, 5pm: Final
CS1102S: Data Structures and Algorithms 13 A: External Algorithms II; Disjoint Sets; Java API Support41