总结:
一、数据结构(Data Structure) 是数据的组织结构,用来组织、存储数据。算法(Algorithm) 就是解决问题的方法或者过程。
二、数据结构分为逻辑结构和物理结构。逻辑结构分为集合结构、线性结构、树形结构、图形结构;物理结构分为顺序存储结构、链式存储结构。
三、算法是一系列运算步骤。算法有5个基本特性,输入、输出、有穷性、确定性、可行性;算法最求5个目标,正确性、可读性、健壮性、运行时间少、内存空间小。
四、「数组」 是实现线性表的顺序结构存储的基础;「链表」 是实现线性表的链式存储结构的基础; 「栈」是一种后进先出的线性表;「队列」是一种先进先出的线性表;「哈希表」是根据关键码值直接进行访问的数据结构;「字符串」是由零个或多个字符组成的有限序列;「树」是由节点与节点之间的关系组成的有限集合;「图」是由顶点的非空有限集合与边的集合构成的结构。
五、「枚举算法」也称为穷举算法,是按照问题本身的性质一一列举出该问题所有可能的解;「递归」指的是一种通过重复将原问题分解为同类的子问题而解决的方法;「分治」就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并;「回溯」是一种选优搜索方法,按选优条件进行深度优先搜索,以达到目标;「贪心」是一种在每次决策时采用当前状态下最优或最好的策略,从而希望导致结果是最好或最优的算法;「位运算」是针对二进制的运算,对每一个位进行布尔运算操作;「动态规划」与分治法相似,都是通过组合子问题的解来求解原问题答案,将问题划分为互不相交的子问题,递归的求解子问题,最后合并子问题的答案。
1. 数据结构
数据结构分为逻辑结构和物理结构。逻辑结构分为集合结构、线性结构、树形结构、图形结构;
物理结构分为顺序存储结构、链式存储结构。
1.1 数组
「数组」 是实现线性表的顺序结构存储的基础。
1.2 链表
「链表」 是实现线性表的链式存储结构的基础。
1.3 栈
「栈」是一种后进先出的线性表。
1.4 队列
「队列」是一种先进先出的线性表。
1.5 哈希表
「哈希表」是根据关键码值直接进行访问的数据结构。
1.6 字符串
「字符串」是由零个或多个字符组成的有限序列。
1.7 树
「树」是由节点与节点之间的关系组成的有限集合。
1.8 图
「图」是由顶点的非空有限集合与边的集合构成的结构。
2. 算法
算法是一系列运算步骤。算法有5个基本特性,输入、输出、有穷性、确定性、可行性;算法最求5个目标,正确性、可读性、健壮性、运行时间少、内存空间小。
1.1 枚举算法
「枚举算法」也称为穷举算法,是按照问题本身的性质一一列举出该问题所有可能的解。
1.2 递归算法
「递归」指的是一种通过重复将原问题分解为同类的子问题而解决的方法。
1.3 分治算法
「分治」就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
1.4 回溯算法
「回溯」是一种选优搜索方法,按选优条件进行深度优先搜索,以达到目标。
1.5 贪心算法
「贪心」是一种在每次决策时采用当前状态下最优或最好的策略,从而希望导致结果是最好或最优的算法。
1.6 位运算
「位运算」是针对二进制的运算,对每一个位进行布尔运算操作。
1.7 动态规划
「动态规划」与分治法相似,都是通过组合子问题的解来求解原问题答案,将问题划分为互不相交的子问题,递归的求解子问题,最后合并子问题的答案。