https://xlinux.nist.gov/dads/ NIST Dictionary of Algorithms and Data Structures This web site is hosted by the Software and Systems Division, Information Technology Laboratory, NIST. Development of this dictionary started in 1998 under the editorship of Paul E. Black. This is a dictionary of algorithms, algorithmic techniques, data structures, archetypal problems, and related definitions. Algorithms include common functions, such as Ackermann's function. Problems include traveling salesman and Byzantine generals. Some entries have links to implementations and more information. Index pages list entries by area and by type. The two-level index has a total download 1/20 as big as this page. Don't use this site to cheat. Teachers, contact us if we can help. Currently we do not include algorithms particular to business data processing, communications, operating systems or distributed algorithms, programming languages, AI, graphics, or numerical analysis: it is tough enough covering "general" algorithms and data structures. If you have suggestions, corrections, or comments, please get in touch with Paul Black. Some terms with a leading variable, such as n-way, m-dimensional, or p-branching, are under k-. You may find useful entries in A Glossary of Computer Oriented Abbreviations and Acronyms. --------------------------------------------------------------------- To look up words or phrases, enter them in the box, then click the button. Google [ ] [Google Search] ( ) Web (*) DADS --------------------------------------------------------------------- A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a: see inverse Ackermann function M o O Malhotra-Kumar-Maheshwari blocking r-approximation algorithm flow ~ Manhattan distance Th many-one reduction map: see dictionary A Markov chain Marlena absolute performance guarantee marriage problem: see assignment abstract data type problem (a,b)-tree Master theorem accepting state matched edge Ackermann's function matched vertex active data structure matching acyclic directed graph: see matrix directed acyclic graph matrix-chain multiplication acyclic graph problem adaptive heap sort matrix multiplication adaptive Huffman coding max-heap property adaptive k-d tree maximal independent set adaptive sort maximally connected component address-calculation sort Maximal Shift adjacency-list representation maximum bipartite matching: see adjacency-matrix representation bipartite matching adjacent maximum-flow problem admissible vertex MBB: see minimum bounding box ADT: see abstract data type Mealy machine adversary mean Aho-Corasick median algorithm meld algorithm BSTW memoization algorithm FGK merge algorithmically solvable: see merge sort decidable problem Merkle tree all pairs shortest path metaheuristic all simple paths metaphone alphabet midrange Alpha Skip Search algorithm Miller-Rabin alternating path min-heap property alternating Turing machine minimal perfect hashing alternation minimax American flag sort minimum bounding box amortized cost minimum cut ancestor minimum spanning tree and minimum vertex cut ANSI Minkowski distance: see L[m] antichain distance antisymmetric mixed integer linear program Apostolico-Crochemore mode Apostolico-Giancarlo algorithm model checking approximate string matching: see model of computation string matching with errors moderately exponential approximation algorithm MODIFIND arborescence monotone priority queue arc: see edge monotonically decreasing arithmetic coding monotonically increasing array Monte Carlo algorithm array index Moore machine array merging Morris-Pratt algorithm array search move: see transition articulation point: see cut vertex move-to-front heuristic assignment problem move-to-root heuristic association list: see dictionary MST: see minimum spanning tree associative multi-commodity flow associative array multigraph asymptotically tight bound: see Th multikey Quicksort asymptotic bound multilayer grid file asymptotic space complexity multiplication method asymptotic time complexity multiprefix asymptotic upper bound: see big-O multiprocessor model notation multi-set: see bag augmenting path multi suffix tree automaton multiway decision average case multiway merge average-case cost multiway search tree AVL tree multiway tree axiomatic semantics Munkres' assignment algorithm B N backtracking naive string search: see brute bag force string search balance nand balanced binary search tree n-ary function balanced binary tree NC many-one reducibility balanced k-way merge sort nearest neighbor balanced merge sort negation balanced multiway merge network flow: see flow function balanced multiway tree: see B-tree network flow problem: see balanced quicksort maximum-flow problem balanced tree next state balanced two-way merge sort NFA: see nondeterministic finite BANG file state machine Batcher sort: see bitonic sort NFTA: see nondeterministic finite Baum Welch algorithm tree automaton BB(a) tree NIST BBP algorithm node BDD nonbalanced merge BD-tree nonbalanced merge sort Bellman-Ford algorithm nondeterministic Benford's law nondeterministic algorithm best case nondeterministic finite automaton: best-case cost see nondeterministic finite best-first search state machine biconnected component nondeterministic finite state biconnected graph machine bidirectional bubble sort nondeterministic finite tree big-O notation automaton binary function nondeterministic polynomial time: binary GCD see NP binary heap nondeterministic tree automaton binary insertion sort nondeterministic Turing machine binary knapsack problem: see nonterminal node: see internal knapsack problem node binary priority queue nor binary relation not binary search Not So Naive binary search tree NP binary tree NP-complete binary tree representation of NP-complete language trees NP-hard bingo sort n queens binomial heap nullary function: see 0-ary binomial tree function bin packing problem null tree bin sort: see bucket sort NYSIIS bintree bipartite graph O bipartite matching bisector O: see big-O notation bitonic sort OBDD bit vector objective function B[k] tree oblivious algorithm blind sort occurrence blind trie octree block off-line algorithm block addressing index offset blocking flow omega block search: see jump search omicron Bloom filter 1-based indexing blossom one-dimensional bogosort on-line algorithm Bond Sequential Search open addressing boolean optimal boolean expression optimal cost: see best-case cost boolean function optimal hashing: see perfect border hashing Boruvka's algorithm optimal merge bottleneck traveling salesman optimal mismatch boundary-based representation optimal polygon triangulation bounded error probability in problem polynomial time: see BPP optimal polyphase merge bounded queue optimal polyphase merge sort bounded stack optimal solution Boyer-Moore optimal triangulation problem Boyer-Moore-Horspool optimal value bozo sort optimization problem B^+-tree or BPP oracle set Bradford's law oracle tape branch and bound oracle Turing machine breadth-first search order Bresenham's algorithm ordered array bridge ordered binary decision diagram: British Museum technique see OBDD brute force ordered linked list brute force string search ordered tree brute force string search with order-preserving hash: see linear mismatches hash BSP-tree order-preserving Huffman coding B*-tree order-preserving minimal perfect B-tree hashing bubble sort oriented acyclic graph: see bucket directed acyclic graph bucket array oriented graph: see directed graph bucketing method oriented tree: see rooted tree bucket sort orthogonal drawing bucket trie orthogonal lists buddy system orthogonally convex rectilinear buddy tree polygon build-heap oscillating merge sort Burrows-Wheeler transform out-degree busy beaver BV-tree P BWT: see Burrows-Wheeler transform Byzantine generals P packing C padding argument pagoda cactus stack pairing heap Calculus of Communicating Systems PAM: see point access method calendar queue parallel computation thesis candidate consistency testing parallel prefix computation candidate verification parallel random-access machine canonical complexity class parametric searching capacitated facility location parent capacity partial function capacity constraint partially decidable problem cartesian tree: see randomized partially dynamic graph problem binary search tree partially ordered set: see poset Caverphone partially persistent data CCS structure cell probe model partial order cell tree partial recursive function cellular automaton partition centroid passive data structure certificate path chain path cover chaining path system problem child Patricia tree Chinese postman problem pattern Chinese remainder theorem pattern element Christofides algorithm P-complete chromatic index PCP: see Post's correspondence chromatic number problem circuit PDA: see pushdown automaton circuit complexity Pearson's hash circuit value problem perfect binary tree circular list perfect hashing circular queue perfect k-ary tree clique perfect matching clique problem perfect shuffle clustering performance guarantee clustering free performance ratio: see relative coalesced chaining performance guarantee coarsening permutation cocktail shaker sort: see permutation sort bidirectional bubble sort persistent data structure codeword phonetic coding coding tree pigeonhole sort Collatz problem pile collective recursion pipelined divide and conquer collision planar graph collision resolution scheme planarization Colussi planar straight-line graph combination PLOP-hashing comb sort point access method Commentz-Walter pointer jumping Communicating Sequential Processes pointer machine commutative poissonization compact data structure polychotomy compact DAWG polyhedron compact trie polylogarithmic comparison sort polynomial competitive analysis polynomial approximation scheme competitive ratio polynomial hierarchy complement polynomial time complete binary tree polynomial-time reduction complete graph polyphase merge completely connected graph polyphase merge sort complete tree polytope complexity poset complexity class postfix traversal: see postorder compound algorithm traversal computable Post machine concave function postman's sort concurrent flow postorder traversal concurrent read, concurrent write Post's correspondence problem concurrent read, exclusive write potential function confluently persistent data PRAM: see parallel random-access structure machine conjunction predicate connected components prefix connected graph prefix code constant function prefix sums: see scan continuous knapsack problem: see prefix traversal: see preorder fractional knapsack problem traversal Cook reduction preorder traversal Cook's theorem primary clustering CORDIC primitive algorithm counting sort primitive recursive covering Prim-Jarnik algorithm CRC: see cyclic redundancy check principle of optimality CRCW: see concurrent read, priority queue concurrent write prisoner's dilemma CREW: see concurrent read, PRNG: see pseudo-random number exclusive write generator critical path problem probabilistic algorithm CSP probabilistically checkable proof CTL probabilistic Turing machine cube root probe sequence cuckoo hashing procedure Cupif-Giannini tree traversal process algebra cut proper cutting plane proper binary tree: see full cutting stock problem binary tree cutting theorem proper coloring cut vertex proper subset cycle property list: see dictionary cyclic redundancy check prune and search pseudo-random number generator D PTAS: see polynomial approximation scheme D-adjacent pth order Fibonacci numbers: see DAG: see directed acyclic graph kth order Fibonacci numbers DAG shortest paths P-tree data structure purely functional language DAWG: see directed acyclic word pushdown automaton graph pushdown transducer decidable language p-way merge sort: see k-way merge decidable problem sort decimation: see prune and search decision problem Q decomposable searching problem degree qm sort dense graph q sort depoissonization quadratic probing depth quadtree depth-first search quadtree complexity theorem deque quad trie derangement quantum computation descendant queue deterministic quick search deterministic algorithm quicksort deterministic finite automata string search R deterministic finite automaton: see deterministic finite state Rabin-Karp: see Karp-Rabin machine radix sort deterministic finite state machine radix tree: see Patricia tree deterministic finite tree ragged matrix automaton Raita deterministic pushdown automaton random access machine deterministic random bit randomization generator: see pseudo-random randomized algorithm number generator randomized binary search tree deterministic tree automaton randomized complexity Deutsch-Jozsa algorithm randomized polynomial time: see RP DFA: see deterministic finite randomized rounding state machine randomized search tree DFS: see depth-first search Randomized-Select DFS forest random number generator DFTA: see deterministic finite random sampling tree automaton random search diagonalization range diameter range sort Dianna rank dichotomic search rapid sort dictionary Ratcliff/Obershelp pattern diet: see discrete interval recognition encoding tree RBST: see randomized binary search difference tree digital search tree reachability: see reachable digital tree reachable digraph: see directed graph rebalance Dijkstra's algorithm recognizer diminishing increment sort rectangular matrix dining philosophers rectilinear direct chaining rectilinear Steiner tree directed acyclic graph recurrence equations: see directed acyclic word graph recurrence relation directed graph recurrence relation discrete interval encoding tree recursion discrete p-center recursion termination disjoint set recursion tree disjunction recursive distributional complexity recursive data structure distribution sort recursive doubling: see pointer distributive partitioning sort jumping divide and conquer recursive language: see decidable divide and marriage before language conquest recursively enumerable language domain recursively solvable: see dominance tree sort decidable problem don't care red-black tree Doomsday rule reduced basis double-direction bubble sort: see reduced digraph bidirectional bubble sort reduced ordered binary decision double-ended priority queue diagram double hashing reduction double left rotation reflexive double metaphone regular decomposition double right rotation rehashing: see double hashing doubly-chained tree: see binary relation tree representation of trees relational structure doubly-ended queue: see deque relative performance guarantee doubly linked list relaxation DPDA: see deterministic pushdown relaxed balance automaton repeated squaring DRBG: see pseudo-random number rescalable generator reservoir sampling D-tree restricted universe sort dual Reverse Colussi dual linear program Reverse Factor dual-pivot quicksort R-file Dutch national flag Rice's method dyadic tree: see binary tree right rotation dynamic right-threaded tree dynamic array RNG: see random number generator dynamic hashing ROBDD: see reduced ordered binary dynamic Huffman coding: see decision diagram adaptive Huffman coding Robin Hood hashing dynamic programming root dynamization transformation root balance: see balance rooted tree E rotate left: see left rotation rotate right: see right rotation easy split, hard merge rotation edge rough graph edge coloring RP edge connectivity R^+-tree edge crossing R^*-tree edge-weighted graph: see weighted R-tree graph run time edit distance: see Levenshtein distance S edit operation edit script saguaro stack: see cactus stack efficiency SAM: see spatial access method 8 queens saturated edge elastic-bucket trie SBB tree element uniqueness scan end-of-string scapegoat tree enfilade scatter storage: see hash table ERCW: see exclusive read, Schorr-Waite graph marking concurrent write algorithm EREW: see exclusive read, search exclusive write search tree Euclidean algorithm: see Euclid's search tree property algorithm secant search Euclidean distance secondary clustering Euclidean Steiner tree segment Euclidean traveling salesman Select problem select and partition Euclid's algorithm selection problem: see select k^th Euler cycle element Eulerian graph selection sort Eulerian path: see Euler cycle select k^th element Euler's formula select mode exact string matching: see string self-loop matching self-organizing list EXCELL self-organizing sequential search: exchange sort: see bubble sort see transpose sequential exclusive or: see xor search exclusive read, concurrent write semidefinite programming exclusive read, exclusive write separate chaining exhaustive search separation theorem existential state sequential search: see linear expandable hashing search expander graph set exponential set cover extended binary tree set packing extended Euclid's algorithm shadow heap extended k-d tree shadow merge extendible hashing shadow merge insert external chaining: see separate shaker sort: see bidirectional chaining bubble sort external index Shannon-Fano coding external memory algorithm shared memory external memory data structure Shell sort external merge Shift-Or external node: see leaf Shor's algorithm external quicksort shortcutting: see pointer jumping external radix sort shortest common supersequence external sort shortest common superstring extrapolation search: see shortest path interpolation search shortest spanning tree: see extremal minimum spanning tree extreme point shuffle: see permutation shuffle sort F sibling sieve of Eratosthenes facility location sift up factor: see substring signature factorial Simon's algorithm fast fourier transform simple merge fathoming simple path feasible region simple uniform hashing feasible solution simplex feedback edge set simulated annealing feedback vertex set simulation theorem Ferguson-Forcade algorithm single-destination shortest-path FFT: see fast fourier transform problem Fibonaccian search single-pair shortest-path problem: Fibonacci heap see shortest path Fibonacci number single program multiple data Fibonacci tree single-source shortest-path FIFO: see queue problem filial-heir chain: see binary tree singly linked list: see linked representation of trees list Find singularity analysis find k^th least element: see sink select k^th element sinking sort: see bubble sort finitary tree skd-tree finite Fourier transform skew symmetry finite state automaton: see finite skip list state machine skip search finite state machine slope selection finite state machine minimization Smith algorithm finite state transducer Smith-Waterman algorithm first child-next sibling binary smoothsort tree: see binary tree solvable representation of trees sort first come, first served sorted array first-in, first-out sorted list Fisher-Yates shuffle sorted-string table: see SSTable fixed-grid method sort in place: see in-place sort flash sort soundex flow source flow conservation space-constructible function flow function space ordering method flow network spanning tree Floyd-Warshall algorithm sparse graph Ford-Bellman: see Bellman-Ford sparse matrix algorithm sparsification Ford-Fulkerson method sparsity forest spatial access method forest editing problem spiral storage formal language: see language splay tree formal methods SPMD: see single program multiple formal verification data forward index square matrix fractional knapsack problem square root fractional solution SST: see minimum spanning tree free edge SSTable free tree stable free vertex stack frequency count heuristic stack tree full array star encoding full binary tree star-shaped polygon full inverted index start state fully dynamic graph problem state fully persistent data structure state machine fully polynomial approximation state transition: see transition scheme static function static Huffman coding: see Huffman functional data structure: see coding active data structure s-t cut st-digraph G Steiner point Steiner ratio Galil-Giancarlo Steiner tree Galil-Seiferas Steiner vertex gamma function Steinhaus-Johnson-Trotter: see GBD-tree Johnson-Trotter GCD: see greatest common divisor Stirling's approximation geometric optimization problem Stirling's formula global optimum stooge sort gnome sort straight-line drawing graph strand sort graph coloring strictly decreasing graph concentration strictly increasing graph drawing strictly lower triangular matrix graph isomorphism strictly upper triangular matrix graph partition string Gray code string editing problem greatest common divisor string matching greedy algorithm string matching on ordered greedy heuristic alphabets grid drawing string matching with errors grid file string matching with mismatches Grover's algorithm string searching: see string matching H strip packing strongly connected component halting problem strongly connected graph Hamiltonian cycle strongly NP-hard Hamiltonian path strsrch Hamming distance stupid sort hard split, easy merge subadditive ergodic theorem hash: see hash function subgraph hashbelt subgraph isomorphism hash function sublinear time algorithm hash heap subsequence hash table subset hash table delete substring hash tree: see Merkle tree subtree Hausdorff distance suffix hB-tree suffix array head suffix automaton heap suffix tree heapify superimposed code heap property superset heapsort supersink heaviest common subsequence: see supersource longest common subsequence symmetric height symmetrically linked list: see height-balanced binary search tree doubly linked list height-balanced tree symmetric binary B-tree: see heuristic red-black tree hidden Markov model symmetric set difference highest common factor: see symmetric traversal: see in-order greatest common divisor traversal histogram sort symmetry breaking HMM: see hidden Markov model homeomorphic T horizontal visibility map Horner's rule tabulation hashing Horspool: see Boyer-Moore-Horspool taco sort hsadelta tail Huffman coding tail recursion huge sparse array target Hungarian algorithm: see Munkres' temporal logic assignment algorithm terminal hybrid algorithm terminal node: see leaf hyperedge ternary search tree hypergraph text HyperLogLog text searching: see string matching I theta: see Th threaded binary tree IBLT: see invertible Bloom lookup threaded tree table three-dimensional ideal merge three-way merge sort ideal random shuffle three-way radix quicksort: see implication multikey Quicksort implies time-constructible function inclusion-exclusion principle time/space complexity inclusive or: see or top-down radix sort incompressible string top-down tree automaton incremental hashing: see linear topological order hashing topological sort in-degree topology tree independent set total function index file totally decidable language: see information theoretic bound decidable language in-order traversal totally decidable problem: see in-place sort decidable problem insertion sort totally undecidable problem integer linear program total order integer multi-commodity flow tour: see Hamiltonian cycle integer polyhedron tournament interactive proof system tournament sort interior-based representation towers of Hanoi internal node tractable internal sort transition interpolation search transition function interpolation-sequential search transitive interpolation sort: see histogram transitive closure sort transitive reduction intersection transpose sequential search interval tree traveling salesman intractable treap introsort: see introspective sort tree introspective sort tree automaton inverse Ackermann function tree contraction inverse suffix array tree editing problem inversion list treesort (1) inverted file index treesort (2) inverted index tree traversal invertible Bloom lookup table triangle inequality irreflexive triconnected graph isomorphic trie iteration trinary function tripartition J Trotter-Johnson: see Johnson-Trotter Jaro-Winkler TSP: see traveling salesman jelly-fish TST: see ternary search tree Johnson's algorithm Turbo-BM Johnson-Trotter Turbo Reverse Factor JSort Turing machine J sort Turing reduction jump list Turing transducer jump search twin grid file twisted tabulation hashing K 2-choice hashing two-dimensional Karnaugh map 2-left hashing Karp-Rabin two-level grid file Karp reduction 2-3-4 tree k-ary heap 2-3 tree k-ary Huffman coding Two Way algorithm k-ary tree two-way linked list: see doubly k-clustering linked list k-coloring two-way merge sort k-connected graph k-d-B-tree U k-dimensional K-dominant match UB-tree k-d tree UKP: see unbounded knapsack key problem KMP: see Knuth-Morris-Pratt unary function algorithm unbiased coin flipping algorithm KmpSkip Search unbounded knapsack problem knapsack problem uncomputable function knight's tour uncomputable problem Knuth-Morris-Pratt algorithm undecidable language Konigsberg bridges problem: see undecidable problem Euler cycle undirected graph Kolmogorov complexity uniform circuit complexity Kraft's inequality uniform circuit family Kripke structure uniform hashing Kruskal's algorithm uniform matrix kth order Fibonacci numbers union k^th shortest path union of automata k^th smallest element: see select universal B-tree k^th element universal hashing k2-tree universal state KV diagram: see Karnaugh map universal Turing machine k-way merge universe k-way merge sort unlimited branching tree k-way tree: see k-ary tree unranking UnShuffle sort L unsolvable problem unsorted list labeled graph upper triangular matrix language last-in, first-out V Las Vegas algorithm lattice van Emde-Boas priority queue layered graph vehicle routing problem LCFS hashing Veitch diagram: see Karnaugh map LCM: see least common multiple Venn diagram LCS vertex LDS: see linked data signature vertex coloring leaf vertex connectivity least common multiple vertex cover leftist tree vertical visibility map left rotation virtual hashing Lempel-Ziv-Welch visibility map level visible level-order traversal Viterbi algorithm Levenshtein distance Vitter's algorithm lexicographical order VRP: see vehicle routing problem LIFO: see stack linear W linear congruential generator linear hash walk linear hashing WCET: see worst-case execution linear insertion sort: see time insertion sort weak-heap linear order: see total order weak-heap sort linear probing weight-balanced tree: see BB(a) linear probing sort tree linear product weighted, directed graph linear program weighted graph linear quadtree window linear search witness link work linked data signature work-depth model linked list work-efficient list work-preserving list contraction worst case little-o notation worst-case cost L[m] distance worst-case execution time load factor worst-case minimum access local alignment locality-sensitive hashing X local optimum logarithmic xor longest common subsequence longest common substring Y Lotka's law lower bound Yule distribution: see Zipfian lower triangular matrix distribution lowest common ancestor l-reduction Z lucky sort LZW compression: see Zeller's congruence Lempel-Ziv-Welch 0-ary function 0-based indexing 0-1 knapsack problem: see knapsack problem Zhu-Takaoka Zipfian distribution Zipf's law zipper ZPP --------------------------------------------------------------------- We thank those who contributed definitions as well as many others who offered suggestions and corrections. The URL https://www.nist.gov/dads/ is an alias which should continue to refer to DADS. We regret any inconvenience this may cause. Here are some references on algorithms and data structures. The Stony Brook Algorithm Repository, which has algorithms organized by type, succinct, illustrated definitions, and ratings of sites with implementations. Data Structures and Algorithms is a wonderful site with illustrations, explanations, analysis, and code taking the student from arrays and lists through trees, graphs, and intractable problems. Eric Weisstein's World of Mathematics or MathWorld. The Sphere online judge (SPOJ) has about 6600 small programming tasks or puzzles and 900 contests. Even nicer it automatically assesses your programs written in 40 languages. The Computing Research Repository (CoRR). Tenth International Conference on Fun With Algorithms (FUN 2020). The conference "is dedicated to the use, design, and analysis of algorithms and data structures, focusing on results that provide amusing, witty but nonetheless original and scientifically profound contributions to the area." Sixth International Conference on Creative Mathematical Sciences Communication (CMSC 2022). The conference "is to explore new ways of communicating mathematical sciences" and "will host a unique interaction between artists (theatre, dance, graphic arts, story) and scientists /teachers/ communicators." The notion is to build on "Computer Science Unplugged, Algorithms Unplugged, the IMAGINATION project, Bebras and other similar efforts." Bibliography [AS98] Pankaj K. Agarwal and Micha Sharir, Efficient Algorithms for Geometric Optimization, ACM Computing Surveys, 30(4):412-458, December 1998. [ATCH99] Algorithms and Theory of Computation Handbook, Mikhail J. Atallah, ed., CRC Press LLC, 1999. [CLR90] Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, Introduction to Algorithms, MIT Press, 1990. [GBY91] Gaston H. Gonnet and Ricardo Baeza-Yates, Handbook of Algorithms and Data Structures -- in Pascal and C, 2^nd edition, Addison-Wesley, 1991. [GCG92] P. Gupta, P. P. Chakrabarti, and S. Ghose, The Towers of Hanoi: Generalizations, Specializations, and Algorithms, Intern. J. Computer Math., 46:149-161, Gordon and Breach Science Publishers S.A., 1992. [GG98] Volker Gaede and Oliver Gunther, Multidimensional Access Methods, ACM Computing Surveys, 30(2):170-231, June 1998. [GT97] Michael T. Goodrich and Roberto Tamassia, Data Structures and Algorithms in Java, 2^nd edition, John Wiley & Sons, 1997. [Graef06] Goetz Graefe, Implementing Sorting in Database Systems, ACM Computing Surveys, 38(3), Article 10, September 2006. [Hirv01] Mika Hirvensalo, Quantum Computing, Springer-Verlag, 2001. [HS83] Ellis Horowitz and Sartaj Sahni, Fundamentals of Data Structures, Computer Science Press, 1983. [Knuth97] Donald E. Knuth, The Art of Computer Programming, Addison-Wesley, volumes 1 and 2, 2^nd edition, 1997. [Knuth98] Donald E. Knuth, The Art of Computer Programming, Addison-Wesley, volume 3, 2^nd edition, 1998. [Leda98] LEDA Library of Efficient Data types and Algorithms (accessed 17 June 2019). [Sedge97] Robert Sedgewick, Algorithms in C, Addison-Wesley, 1997. [Stand98] Thomas Standish, Data Structures in Java, Addison-Wesley, 1998. [Sund98] Daniel M. Sunday, A Very Fast Substring Search Algorithm, Communications of the ACM, 33(8):132-142, August 1998. [Vitt01] Jeffrey Scott Vitter, External Memory Algorithms and Data Structures: Dealing with Massive Data, ACM Computing Surveys, 33 (2):209-271, June 2001. [Wier98] Roel Wieringa, A Survey of Structured and Object-Oriented Software Specification Methods and Techniques, ACM Computing Surveys, 30(4):459-527, December 1998. --------------------------------------------------------------------- Here are citation examples and an explanation of credit. Robots, please index all term pages, including spelling variants. Viewable With Any Browser --------------------------------------------------------------------- Created Fri Sep 4 16:39:23 1998 by Paul E. Black (paul.black@nist.gov) This Trailer Updated Mon Nov 22 15:20:31 2021 by Paul E. Black (paul.black@nist.gov) This page's URL is https://www.nist.gov/dads/ DOI 10.18434/T4/1422485