Dynamic Programming

Dynamic programming (DP) optimizes solutions to recursive problems by combining previously computed solutions to subproblems. DP minimizes repeated calls with the same inputs because results to prior calls are stored for later use.

Read More

Graphs

A graph is a data structure made of nodes connected to other nodes. Unlike trees, graphs can form cycles.

Read More

Trees

Trees are data structures made out of a root node connected to subtrees called child nodes. Trees are a type of graph.

Read More

Vectors and ArrayLists

Vectors and ArrayLists are arrays without a preset size. This allows the vector or the ArrayList to automatically adjust to the number of elements it currently stores.

Read More

Hash Tables

Hash tables (or hash maps) are data structures that store data in arrays according to that data’s key.

Read More

Quicksort

Quicksort is a recursive sorting algorithm that works by sorting array elements around a pivot. This process repeats until the array is sorted.

Read More

Merge Sort

Merge sort is a recursive sorting algorithm that works by dividing an array into chunks, sorting them, and combining the chunks together in sorted order.

Read More

Heaps and Heapsort

Heaps are complete binary trees where the root node is larger than or smaller than the child nodes, depending on the heap’s type. Heapsort uses this property to sort arrays.

Read More

Recursion

Recursion solves large problems by breaking a large problem into smaller problems, then combining the solutions to the smaller problems into one big solution.

Read More

Binary Search

Binary search looks up an item in a sorted array by dividing the search space by 2 until the item is found.

Read More

Big O Notation

Big O (big-oh) notation gives computer scientists a way to show a program’s time complexity.

Read More

Linked Lists

A linked list is a data structure that implements a list using nodes that point to successive members of a list. Below is a picture of a linked list with four nodes.

Read More