Alphabet 
An immutable data type to represent an alphabet.

BFSDiPaths 
An immutable data type to compute shortest paths from a fixed source vertex to any other vertex
in a directed graph.

BFSPaths 
An immutable data type to compute shortest paths between a fixed source vertex and any other
vertex in an undirected graph.

BinarySearch 
This library implements binary search.

BinarySearchST<Key extends Comparable<Key>,Value> 
This data type provides an implementation of the ordered symbol table (OrderedST) API, using
as underlying data structures an ordered array for the keys and a parallel array for the values.

BinarySearchTreeST<Key extends Comparable<Key>,Value> 
This data type provides an implementation of the ordered symbol table (OrderedST) API, using a
binary search tree (BST) as the underlying data structure.

Bubble 
This library implements bubble sort.

Counter 
A data type to represent a counter.

Date 
An immutable data type to represent a date (day, month, and year).

DFSDiPaths 
An immutable data type to compute paths from a fixed source vertex to any other vertex in a
directed graph.

DFSOrders 
An immutable data type to determine depthfirst orders (pre, post, and reverse post) for a
digraph.

DFSPaths 
An immutable data type to compute paths between a fixed source vertex and any other vertex in an
undirected graph.

DiCycle 
An immutable data type to determine whether a digraph has a directed cycle and, if so, find
such a cycle.

DiEdge 
An immutable data type to represent a weighted edge in an directed graph.

DiGraph 
A data type to represent a directed graph.

Dijkstra 
An immutable data type to determine the shortest paths from a fixed source vertex to every other
vertex in an edgeweighted digraph.

Edge 
An immutable, comparable data type to represent a weighted edge in an undirected graph.

EdgeWeightedDiGraph 
A data type to represent a directed graph with weighted edges.

EdgeWeightedGraph 
A data type to represent an undirected graph with weighted edges.

Genome 
This library provides static methods for compressing and expanding a genomic sequence using a
2bit code.

Graph 
A data type to represent an undirected graph.

Heap 
This library implements heap sort.

Huffman 
This data type provides static methods for compressing and expanding a binary input using
Huffman codes over the 8bit extended ASCII alphabet.

IndexMaxPQ<Key extends Comparable<Key>> 
A data type to represent an indexed maximum priority queue (indexMaxPQ) data structure,
implemented using a binary maxheap.

IndexMinPQ<Key extends Comparable<Key>> 
A data type to represent an indexed minimum priority queue (indexMinPQ) data structure,
implemented using a binary minheap.

Insertion 
This library implements insertion sort.

Inversions 
This library to count the number of inversions in an array.

KMP 
A data type to find the first occurrence of a pattern string within a text string, using the
KnuthMorrisPratt (KMP) substring search algorithm.

Kruskal 
An immutable data type to determine the minimum spanning tree (MST) of an edgeweighted graph.

LinearSearch 
This library implements linear search.

LinearSearchST<Key,Value> 
This data type provides an implementation of the basic symbol table (BasicST) API, using a
linkedlist as the underlying data structure.

LinkedBag<Item> 
This data type provides an implementation of the Bag API, using a linkedlist as the
underlying data structure.

LinkedQueue<Item> 
This data type provides an implementation of the Queue API, using a linkedlist as the
underlying data structure.

LinkedStack<Item> 
This data type provides an implementation of the Stack API, using a linkedlist as the
underlying data structure.

LSD 
This library implements LSD radix sort.

MaxPQ<Key> 
A data type to represent a maximum priority queue (maxPQ) data structure, implemented using a
binary maxheap.

Merge 
This library implements merge sort.

MinPQ<Key> 
A data type to represent a minimum priority queue (minPQ) data structure, implemented using a
binary minheap.

MSD 
This library implements MSD radix sort.

NFA 
A a data type for creating a nondeterministic finite state automaton (NFA) from a regular
expression and testing whether a given string is matched by that regular expression.

Point2D 
An immutable data type to represent a 2d point with realvalued coordinates.

Quick 
This library implements quick sort.

Quick3way 
This library implements quick3way sort.

QuickFindUF 
This data type provides an implementation of the UF API in which the find operation is
efficient (runs in constant time).

QuickUnionUF 
This data type provides an implementation of the UF API in which the find and union operations
are efficient (run in logarithmic time) in the average case.

RectHV 
An immutable data type to represent a 2d axisaligned rectangle with realvalued coordinates.

RedBlackBinarySearchTreeST<Key extends Comparable<Key>,Value> 
This data type provides an implementation of the ordered symbol table (OrderedST) API, using a
redblack binary search tree (RBBST) as the underlying data structure.

ResizingArrayBag<Item> 
This data type provides an implementation of the Bag API, using an array as the underlying
data structure.

ResizingArrayQueue<Item> 
This data type provides an implementation of the Queue API, using an array as the underlying
data structure.

ResizingArrayStack<Item> 
This data type provides an implementation of the Stack API, using an array as the underlying
data structure.

RunLength 
This library provides static methods for compressing and expanding a binary input using
runlength encoding with 8bit run lengths.

Selection 
This library implements selection sort.

SeparateChainingHashST<Key,Value> 
This data type provides an implementation of the basic symbol table (BasicST) API, using an
array (hash table) of LinearSearchST objects (chains) as the underlying data structure.

Set<Key extends Comparable<Key>> 
An iterable data type to represent an ordered set.

Shell 
This library implements shell sort.

SparseMatrix 
A data type to represent an m x n sparse matrix.

SparseVector 
A data type to represent an n dimensional, realvalued sparse vector.

SymbolDiGraph 
An immutable data type to represent a directed symbol graph.

SymbolGraph 
An immutable data type to represent an undirected symbol graph.

Topological 
An immutable data type to determine whether a digraph has a topological order and, if so, find
such an order.

Transaction 
An immutable data type to represent a commercial transaction with a name, date, and amount.

TrieST<Value> 
A data type to represent the trie data structure, which is a symbol table with with string keys.

Vector 
An immutable data type to represent an ndimensional vector.

WeightedQuickUnionUF 
This data type provides an implementation of the UF API in which the find and union operations
run in logarithmic time.
