#separator:tab
#html:false
#tags column:4
Algorithm	A finite list of steps that solves a problem		tech-algorithms
Big-O notation	Describes how running time or memory grows as input grows		tech-algorithms
O(1)	Constant time; stays the same as input grows		tech-algorithms
O(log n)	Logarithmic time; grows slowly, like binary search		tech-algorithms
O(n)	Linear time; grows in proportion to input size		tech-algorithms
O(n log n)	Typical of efficient sorting like merge sort		tech-algorithms
O(n squared)	Quadratic time; typical of simple nested loops		tech-algorithms
O(2 to the n)	Exponential time; becomes huge very quickly		tech-algorithms
Time complexity	How running time grows with input size		tech-algorithms
Space complexity	How memory use grows with input size		tech-algorithms
Linear search	Check each item in order until found; O(n)		tech-algorithms
Binary search	Repeatedly halve a sorted list to find an item; O(log n)		tech-algorithms
Binary search requirement	The data must be sorted		tech-algorithms
Bubble sort	Repeatedly swaps adjacent items that are out of order; O(n squared)		tech-algorithms
Selection sort	Repeatedly picks the smallest item and places it first; O(n squared)		tech-algorithms
Insertion sort	Builds a sorted list one item at a time; good for small or nearly sorted lists		tech-algorithms
Merge sort	Splits the list, sorts the halves, then merges; O(n log n)		tech-algorithms
Quick sort	Picks a pivot and partitions around it; average O(n log n)		tech-algorithms
Heap sort	Sorts using a heap; O(n log n)		tech-algorithms
Pivot	The element used to partition in quick sort		tech-algorithms
Stable sort	A sort that keeps equal items in their original order		tech-algorithms
Divide and conquer	Split a problem, solve the parts, combine the answers		tech-algorithms
Recursion	A function calling itself on smaller input		tech-algorithms
Base case	The stopping point of a recursion		tech-algorithms
Dynamic programming	Solve overlapping subproblems once and store the results		tech-algorithms
Memoization	Caching results of function calls		tech-algorithms
Greedy algorithm	Pick the best choice at each step		tech-algorithms
Brute force	Try every possibility		tech-algorithms
Backtracking	Try choices and undo them when they fail		tech-algorithms
Breadth-first search (BFS)	Explore a graph level by level using a queue		tech-algorithms
Depth-first search (DFS)	Explore a graph as deep as possible using a stack or recursion		tech-algorithms
Dijkstra's algorithm	Finds shortest paths in a weighted graph with non-negative weights		tech-algorithms
A* search	A pathfinding algorithm that uses a guess of distance to the goal		tech-algorithms
Minimum spanning tree	A tree connecting all nodes with smallest total weight		tech-algorithms
Kruskal's and Prim's	Algorithms for finding minimum spanning trees		tech-algorithms
Topological sort	Ordering tasks so each comes after its prerequisites		tech-algorithms
Hashing	Turning data into a fixed-size number for fast lookup		tech-algorithms
Collision	When two keys hash to the same spot		tech-algorithms
Euclid's algorithm	Finds the greatest common divisor using repeated remainders		tech-algorithms
Sieve of Eratosthenes	Finds all primes up to a number by crossing out multiples		tech-algorithms
Fibonacci sequence	Each number is the sum of the two before: 0, 1, 1, 2, 3, 5...		tech-algorithms
Factorial	n! is the product of all whole numbers from 1 to n		tech-algorithms
Tower of Hanoi	A puzzle that is a classic recursion example		tech-algorithms
Traveling salesman problem	Find the shortest route visiting every city once; very hard		tech-algorithms
NP-complete	A class of hard problems with no known fast solution		tech-algorithms
P vs NP	A famous open question about whether hard-to-solve problems are also easy to check		tech-algorithms
Heuristic	A practical shortcut that finds a good answer, not always the best		tech-algorithms
Pseudocode	Plain-language description of an algorithm		tech-algorithms
Invariant	A condition that stays true during an algorithm		tech-algorithms
Best case	The fastest an algorithm can run		tech-algorithms
Worst case	The slowest an algorithm can run		tech-algorithms
Average case	Typical running time over many inputs		tech-algorithms
In-place algorithm	Uses very little extra memory		tech-algorithms
Two pointers	A technique using two positions that move through data		tech-algorithms
Sliding window	A technique moving a fixed range along data		tech-algorithms
PageRank	Google's algorithm that ranks pages by links to them		tech-algorithms
Compression algorithm	Makes data smaller, like ZIP or JPEG		tech-algorithms
Lossless compression	Compression that can be exactly reversed		tech-algorithms
Lossy compression	Compression that discards some data, like JPEG		tech-algorithms
Random number generator	An algorithm that makes numbers that look random		tech-algorithms
Machine learning algorithm	An algorithm that learns patterns from data		tech-algorithms
Al-Khwarizmi	Persian mathematician whose name gave us the word algorithm		tech-algorithms
Algorithm origin	Named after a 9th-century scholar al-Khwarizmi		tech-algorithms
