算法(Algorithm),在数学和计算机科学之中,指一个被定义好的、计算机可施行其指示的有限步骤或次序,常用于计算、数据处理和自动推理。算法可以使用条件语句通过各种途径转移代码执行(称为自动决策),并推导出有效的推论(称为自动推理),最终实现自动化。

各种算法的层次关系

各种算法复杂多变,使得学习起来非常困难,好在各种算法与数据结构有递进的层次关系,通过掌握基础的算法逻辑再掌握更高级的算法,有助与我们循序渐进的掌握算法,下面这张图大概列出了各种算法之间的层次关系,可以根据这个顺序去学习。

flowchart TD

%% nodes
array-and-hashing("Array & Hashing")
two-pointers("Two Pointers")
stack("Stack")

array-and-hashing --> two-pointers
array-and-hashing --> stack

binary-search("Binary Search")
sliding-window("Sliding Window")
linked-list("Linked List")

two-pointers --> binary-search
two-pointers --> sliding-window
two-pointers --> linked-list

trees("Trees")

binary-search --> trees
linked-list --> trees

tries("Tries")
heap-priority-queue("Heap/Priority Queue")
backtracking("Backtracking")

trees --> tries
trees --> heap-priority-queue
trees --> backtracking

graphs("Graphs")
1d-dp("1-D DP")

backtracking --> graphs
backtracking --> 1d-dp

intervals("Intervals")
greedy("Greedy")
advanced-graphs("Advanced Graphs")
2d-dp("2-D DP")
bit-manipulation("Bit Manipulation")

heap-priority-queue --> intervals
heap-priority-queue --> greedy
heap-priority-queue --> advanced-graphs
graphs --> advanced-graphs
graphs --> 2d-dp
1d-dp --> 2d-dp
1d-dp --> bit-manipulation

math-geometry("Math Geometry")

graphs --> math-geometry
bit-manipulation --> math-geometry

class array-and-hashing,two-pointers,stack internal-link;
class binary-search,sliding-window,linked-list internal-link;
class trees,tries,heap-priority-queue internal-link;
class backtracking,graphs,1d-dp internal-link;
class intervals,greedy,advanced-graphs,2d-dp internal-link;
class bit-manipulation,math-geometry internal-link;