Index
A
- adjacency-list-based graph
- operations, complexity / Complexity of operations in an adjacency-list-based graph
- with dense storage for vertices / Adjacency-list-based graph with dense storage for vertices
- with dense storage for vertices, operations complexity / Complexity of the operations of an adjacency-list-based graph with dense storage for vertices
- adjacency-matrix-based graph
- adjacency list
- about / Adjacency list
- adjacency matrix
- about / Adjacency matrix
- sparse adjacency matrix graph, operations complexity / Complexity of operations in a sparse adjacency matrix graph
- aggregation operation
- about / Map for a linked list
- algorithm
- performance / The performance of an algorithm
- best case, complexity / Best case, worst case and the average case complexity
- worst case, complexity / Best case, worst case and the average case complexity
- average case, complexity / Best case, worst case and the average case complexity
- asymptotic complexity, analyzing / Analysis of asymptotic complexity
- optimizing / Optimization of our algorithm
- append operation
- implementing, for functional linked lists / Append on a linked list
- array-backed heap
- about / Array-backed heap
- ArrayHeap
- operations, complexity / Complexity of operations in ArrayHeap and LinkedHeap
- arrays
- about / Arrays
- elements, inserting / Insertion of elements in an array
- new elements, inserting / Insertion of a new element and the process of appending it
- new elements, appending / Insertion of a new element and the process of appending it
- asymptotic analysis
- asymptotic complexity
- analyzing / Analysis of asymptotic complexity
- function, upper bound / Asymptotic upper bound of a function
- algorithm, upper bound / Asymptotic upper bound of an algorithm
- function, lower bound / Asymptotic lower bound of a function
- function, tight bound / Asymptotic tight bound of a function
- AVL tree
- about / AVL tree
- complexity / Complexity of search, insert, and delete in an AVL tree
- element, searching / Complexity of search, insert, and delete in an AVL tree
- element, inserting / Complexity of search, insert, and delete in an AVL tree
- element, deleting / Complexity of search, insert, and delete in an AVL tree
B
- binary search
- about / Binary search
- complexity / Complexity of the binary search algorithm
- binary search tree
- about / Binary search tree
- element, inserting / Insertion in a binary search tree
- invariant / Invariant of a binary search tree
- element, deleting / Deletion of an element from a binary search tree
- operation complexity / Complexity of the binary search tree operations
- binary tree
- about / Binary tree
- depth-first traversal, types / Types of depth-first traversals
- non-recursive depth-first search / Non-recursive depth-first search
- binomial forest
- about / Binomial forest, Binomial forest
- uses / Why call it a binomial tree?
- number of nodes / Number of nodes
- heap property / The heap property
- operations, complexity / Complexity of operations in a binomial forest
- breadth-first traversal
- about / The breadth-first traversal
- bubble sort
- about / Bubble sort
- inversions / Inversions
- complexity / Complexity of the bubble sort algorithm
C
- CAS operation / Compare and set
- circular linked list
- about / Circular linked list
- element, inserting / Insertion
- element, removing / Removal
- element, rotating / Rotation
- comparison based sorting
- complexity / Complexity of any comparison-based sorting
- connected graph / What is a graph?
- cut property / Cut property
- cycle / What is a graph?
- cycle detection
- about / Cycle detection
- complexity / Complexity of the cycle detection algorithm
D
- dense adjacency-matrix-based graph
- operations, complexity / Complexity of operations in a dense adjacency-matrix-based graph
- depth-first traversal
- about / The depth-first traversal
- types / Types of depth-first traversals
- pre-order traversal / Types of depth-first traversals
- in-order traversal / Types of depth-first traversals
- post-order traversal / Types of depth-first traversals
- dequeuing
- about / Queue
- directed graph / What is a graph?
- double ended queue
- about / Double ended queue
- push operation / Double ended queue
- pop operation / Double ended queue
- inject operation / Double ended queue
- eject operation / Double ended queue
- peek operation / Double ended queue
- peeklast operation / Double ended queue
- fixed length double ended queue, using with array / Fixed-length double ended queue using an array
- variable size double ended queue, using with linked list / Variable-sized double ended queue using a linked list
- doubly linked list
- about / Doubly linked list
- element, inserting at beginning / Insertion at the beginning or at the end
- element, inserting at end / Insertion at the beginning or at the end
- element, inserting at arbitrary location / Insertion at an arbitrary location
- first element, removing / Removing the first element
- arbitrary element, removing / Removing an arbitrary element
- last element, removing / Removal of the last element
E
- enqueuing
- about / Queue
- expression syntax
F
- filtering
- about / Functional linked lists
- filter operation
- implementing, for functional linked lists / Filter operation for a linked list
- final keyword / Implementing a functional interface with lambda
- first-in-first-out (FIFO)
- about / Queue
- fixed-sized queue
- using, with array / Fixed-sized queue using an array, Variable-sized queue using a linked list
- fixed-sized stack
- using, with array / Fixed-sized stack using an array
- using, with linked list / Variable-sized stack using a linked list
- fixed length double ended queue
- using, with array / Fixed-length double ended queue using an array
- flatMap method
- implementing, for functional linked lists / The flatMap method on a linked list
- fold operation
- implementing, for functional linked lists / Fold operation on a list
- forEach method
- implementing, for functional linked lists / The forEach method for a linked list
- forest / What is a graph?
- functional data structures
- about / Functional data structures and monads
- functional linked lists / Functional linked lists
- functional interface
- about / Functional interface
- implementing, with lambda / Implementing a functional interface with lambda
- functional linked lists
- about / Functional linked lists
- forEach method / The forEach method for a linked list
- map() method / Map for a linked list
- fold operation / Fold operation on a list
- filter operation / Filter operation for a linked list
- append operation / Append on a linked list
- flatMap method / The flatMap method on a linked list
- functional programming
- performance / Performance of functional programming
G
- graph
- about / What is a graph?
- undirected graph / What is a graph?
- directed graph / What is a graph?
- subgraph / What is a graph?
- connected graph / What is a graph?
- complete graph / What is a graph?
- representing / Representation of a graph in memory
- adjacency matrix / Adjacency matrix
- adjacency-matrix-based graph, space-efficient / More space-efficient adjacency-matrix-based graph
- adjacency list / Adjacency list
- adjacency-list-based graph / Adjacency-list-based graph with dense storage for vertices
- traversal / Traversal of a graph
- traversals, complexity / Complexity of traversals
- graph ADT
- about / The graph ADT
- operations / The graph ADT
H
- hash function
- about / Hash tables
- properties / Hash tables
- hash table
- about / Hash tables
- element, inserting / Insertion
- complexity, of insertion / The complexity of insertion
- element, searching / Search
- complexity, of search / Complexity of the search
- load factor / Choice of load factor
- heap
- about / Heap
- insertion / Insertion
- minimum elements, removing / Removal of minimum elements
- complexity, analysis / Analysis of complexity
- serialized representation / Serialized representation
- array-backed heap / Array-backed heap
- linked heap / Linked heap
I
- in-place heap sort
- about / In-place heap sort
- insertion sort
- about / Insertion sort
- complexity / Complexity of insertion sort
- invariant, binary search tree
- inversions
- about / Inversions
J
- Java
- lambda expression / Lambda expressions in Java
- JavaBean
- about / Option monad
L
- lambda
- about / Lambda expressions in Java
- lambda expression
- about / Lambda expressions in Java
- functional interface / Functional interface
- functional interface, implementing / Implementing a functional interface with lambda
- Last In First Out (LIFO)
- about / The depth-first traversal
- last in first out (LIFO)
- about / Stack
- linear search
- about / Search algorithms
- linked heap
- about / Linked heap
- insertion / Insertion
- minimal elements, removal / Removal of the minimal elements
- linked list
- about / Linked list, A tree data structure
- element, appending at end / Appending at the end
- element, inserting at beginning / Insertion at the beginning
- element, inserting at arbitrary position / Insertion at an arbitrary position
- arbitrary element, searching / Looking up an arbitrary element
- arbitrary element, removing / Removing an arbitrary element
- iteration / Iteration
- loop / What is a graph?
M
- map() method
- implementing, for functional linked lists / Map for a linked list
- merge sort
- about / mergesort
- complexity / The complexity of mergesort
- tempArray copy, avoiding / Avoiding the copying of tempArray
- minimum spanning tree, finding
- about / Finding the minimum spanning tree
- union find / Union find
- UnionFind, operations complexity / Complexity of operations in UnionFind
- implementation / Implementation of the minimum spanning tree algorithm
- complexity / Complexity of the minimum spanning tree algorithm
- monads
- about / Functional data structures and monads, The concept of a monad
- option monad / Option monad
- Try monad / Try monad
N
- non-recursive depth-first search
- about / Non-recursive depth-first search
- non-tail single recursive functions
O
- option monad
- about / Option monad
P
- path / What is a graph?
- priority queue
- used, for sorting / Sorting using a priority queue
- priority queue ADT
- about / Priority queue ADT
- producer-consumer model
- about / Producer-consumer model
- semaphore / Semaphore
- compare and set / Compare and set
- volatile field / Volatile field
- thread-safe blocking queue / Thread-safe blocking queue
- implementing / Producer-consumer implementation
- spinlock and busy wait / Spinlock and busy wait
Q
- queue
- about / Variable-sized stack using a linked list, Queue
- enqueue operation / Queue
- dequeue operation / Queue
- peek operation / Queue
- fixed-sized queue, using with array / Fixed-sized queue using an array, Variable-sized queue using a linked list
- quicksort
- about / quicksort
- complexity / Complexity of quicksort
- random pivot selection / Random pivot selection in quicksort
R
- random pivot selection
- in quicksort / Random pivot selection in quicksort
- reactive programming
- about / What is reactive programming?
- uses / What is reactive programming?
- functional way / Functional way of reactive programming
- recursive algorithms
- about / Recursive algorithms
- complexity analysis / Analysis of the complexity of a recursive algorithm
- recursive calls
- problem / A problem with recursive calls
- tail recursive function / Tail recursive functions
- non-tail single recursive functions / Non-tail single recursive functions
- red-black tree
- about / Red-black tree
- element, inserting / Insertion
- element, deleting / Deletion
- worst case scenario / The worst case of a red-black tree
- right hand side (RHS)
- about / Append on a linked list
- rotation operation
- using, with self-balancing binary search tree / Self-balancing binary search tree
S
- search algorithms
- about / Search algorithms
- binary search / Binary search
- selection sort
- about / Selection sort
- complexity / Complexity of the selection sort algorithm
- self-balancing binary search tree
- about / Self-balancing binary search tree
- rotation operation, using / Self-balancing binary search tree
- AVL tree / AVL tree
- semaphore / Semaphore
- sorting
- about / Sorting
- selection sort / Selection sort
- insertion sort / Insertion sort
- bubble sort / Bubble sort
- sorting algorithm
- stability / The stability of a sorting algorithm
- spanning tree
- about / Spanning tree and minimum spanning tree
- with vertices V and edges E / For any tree with vertices V and edges E, |V| = |E| + 1
- connected undirected graph / Any connected undirected graph has a spanning tree
- undirected connected graph / Any undirected connected graph with the property |V| = |E| + 1 is a tree
- cut property / Cut property
- minimum spanning tree / Minimum spanning tree is unique for a graph that has all the edges whose costs are different from one another
- minimum spanning tree, finding / Finding the minimum spanning tree
- stack
- about / Stack
- push operation / Stack
- pop operation / Stack
- peek operation / Stack
- fixed-sized stack, using with array / Fixed-sized stack using an array
- variable sized stack, using with linked list / Variable-sized stack using a linked list
- subgraph / What is a graph?
T
- tail recursive functions
- about / Tail recursive functions
- Thread-safe blocking queue / Thread-safe blocking queue
- time complexity
- improving / Improving time complexity
- tree / What is a graph?
- tree abstract data type
- about / The tree abstract data type
- tree data structure
- about / A tree data structure
- tree traversal / The traversal of a tree
- tree traversal
- about / The traversal of a tree
- depth-first traversal / The depth-first traversal
- breadth-first traversal / The breadth-first traversal
- Try monad
- about / Try monad
U
- undirected graph / What is a graph?
V
- variable size double ended queue
- using, with linked list / Variable-sized double ended queue using a linked list
W
- wrapper object
- about / Linked list