Algorithm
A step-by-step procedure for solving a problem or performing a task, typically expressed in pseudocode or a programming language.
Data Structure
A way of organizing and storing data to enable efficient access and modification. Examples include arrays, linked lists, trees, and graphs
Linear Search
A simple searching algorithm that checks each element of a list sequentially until the target element is found or the list ends.
Binary Search
An algorithm for traversing or searching tree or graph data structures, starting from the root and exploring as far as possible along each branch before backtracking.
Depth-First Search (DFS)
An algorithm for traversing or searching tree or graph data structures, starting from the root and exploring as far as possible along each branch before backtracking.
Breadth-First Search (BFS)
An algorithm for traversing or searching tree or graph data structures, starting from the root and exploring all neighbors at the present depth level before moving on to nodes at the next depth level.
Bubble Sort
A simple sorting algorithm that repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order.
Selection Sort
A sorting algorithm that divides the list into a sorted and an unsorted part, repeatedly selecting the smallest (or largest) element from the unsorted part and moving it to the sorted part.
Insertion Sort
A sorting algorithm that builds the final sorted array one item at a time, inserting each new element into its proper place among the already sorted elements.
Merge Sort
A divide-and-conquer sorting algorithm that divides the list into halves, recursively sorts each half, and then merges the sorted halves to produce the final sorted list.
Quick Sort
A divide-and-conquer sorting algorithm that selects a 'pivot' element, partitions the array around the pivot, and recursively applies the same process to the sub-arrays.
Dynamic Programming
A method for solving complex problems by breaking them down into simpler subproblems, storing the results of subproblems to avoid redundant computations.
Optimal Substructure
A property of a problem that indicates an optimal solution can be constructed from optimal solutions to its subproblems.