算法(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;