diff --git a/数据结构/数据结构.md b/数据结构/数据结构.md index 0b192d5..287a81c 100644 --- a/数据结构/数据结构.md +++ b/数据结构/数据结构.md @@ -13,7 +13,7 @@ ### 物理结构 * 存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。数据的存储结构主要有:顺序存储、链式存储、索引存储和散列存储。 * 顺序存储:存储的物理位置相邻。(p.s. 物理位置即信息在计算机中的位置。) - * 链接存储:存储的物理位置未必相邻,通过 记录相邻元素的物理位置来找到相邻元素。 + * 链接存储:存储的物理位置未必相邻,通过记录相邻元素的物理位置来找到相邻元素。 * 索引存储:类似于目录,以后可以联系操作系统的文件系统章节来理解。 * 散列存储:通过关键字直接计算出元素的物理地址(以后详解)。 ### 算法的五个特征 @@ -211,7 +211,9 @@ First Out) * 要理解递归,你要先理解递归,直到你能理解递归。 如果在一个函数、过程或数据结构的定义中又应用了它自身,那么这个函数、过程或数据结构称为是递归定义的,简称递归。递归最重要的是递归式和递归边界。 * 1.阶乘 + * 时间复杂度:O(NlogN) * 2.斐波那契数列 + * 时间复杂度 O(2^n) * 概要: 如何将中缀表达式转换成后缀表达式? * 1.按运算符优先级对所有运算符和它的运算数加括号。(原本的括号不用加) * 2.把运算符移到对应的括号后。 @@ -245,7 +247,7 @@ First Out) * 1.树中的结点数等于所有结点的度数加1。 * 证明:不难想象,除根结点以外,每个结点有且仅有一个指向它的前驱结点。也就是说每个结点和指向它的分支一一对应。 假设树中一共有b个分支,那么除了根结点,整个树就包含有b个结点,所以整个树的结点数就是这b个结点加上根结点,设为n,则n=b+1。而分支数b也就是所有结点的度数,证毕。 - * 2.度为m的树中第i层上至多有m^i−1个结点(i≥1)。 + * 2.度为m的树中第i层上至多有m^(i−1)个结点(i≥1)。 * 证明:(数学归纳法) 首先考虑i=1的情况:第一层只有根结点,即一个结点,i=1带入式子满足。 假设第i-1层满足这个性质,第i-1层最多有m i-2个结点。 @@ -427,7 +429,7 @@ i-1层 * 概要: * * - * 克鲁斯卡尔算法操作分为对边的权值排序部分和一个单重for循环,它们是并列关系,由于排序耗费时间大于单重循环,所以克鲁斯卡尔算法的主要时间耗费在排序上。排序和图中边的数量有关系,所以适合稀疏图 + * 概要: 克鲁斯卡尔算法操作分为对边的权值排序部分和一个单重for循环,它们是并列关系,由于排序耗费时间大于单重循环,所以克鲁斯卡尔算法的主要时间耗费在排序上。排序和图中边的数量有关系,所以适合稀疏图 * 最短路径 * 迪杰斯特拉 * 一个源点到其余顶点的最短路径 @@ -579,7 +581,9 @@ path[]:path[i]表示从源点到顶点i之间的最短路径的前驱结点, * 查找过程:①先让待查找关键字key和结点的中的关键字比较,如果等于其中某个关键字,则查找成功。 ②如果和所有关键字都不相等,则看key处在哪个范围内,然后去对应的指针所指向的子树中查找。 Eg:如果Key比第一个关键字K1还小,则去P0指针所指向的子树中查找,如果比最后一个关键字Kn还大,则去Pn指针所指向的子树中查找。 + * 2.B树的插入操作 + * 分裂的方法:取这个关键字数组中的中间关键字(⌈n/2⌉)作为新的结点,然后其他关键字形成两个结点作为新结点的左右孩子。 * 3.B树的删除操作 * B树中的删除操作与插入操作类似,但要稍微复杂些,要使得删除后的结点中的关键字个数≥⌈m/2⌉-1 ,因此将涉及结点的“合并”问题。由于删除的关键字位置不同,可以分为关键字在终端结点和不在终端结点上两种情况。 * 1)如果删除的关键字在终端结点上(最底层非叶子结点): @@ -591,7 +595,6 @@ path[]:path[i]表示从源点到顶点i之间的最短路径的前驱结点, * 相邻关键字:对于不在终端结点上的关键字,它的相邻关键字是其左子树中值最大的关键字或者右子树中值最小的关键字。 * 第一种情况:存在关键字数量大于⌈m/2⌉-1 的左子树或者右子树,在对应子树上找到该关键字的相邻关键字,然后将相邻关键字替换待删除的关键字。 * 第二种情况:左右子树的关键字数量均等于⌈m/2⌉-1 ,则将这两个左右子树结点合并,然后删除待删除关键字。 - * 概要: 分裂的方法:取这个关键字数组中的中间关键字(⌈n/2⌉)作为新的结点,然后其他关键字形成两个结点作为新结点的左右孩子。 * B+树 * B+树是常用于数据库和操作系统的文件系统中的一种用于查找的数据结构 * m阶的B+树与m阶的B树的主要差异在于: @@ -761,4 +764,4 @@ path[]:path[i]表示从源点到顶点i之间的最短路径的前驱结点, * 树的先序遍历等于它对应二叉树的先序遍历,后序遍历等于它对应的二叉树的中序遍历 * 概要: 例子 -![picture](https://github.com/SSHeRun/CS-Xmind-Note/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.png) +*XMind: ZEN - Trial Version* \ No newline at end of file diff --git a/数据结构/数据结构.png b/数据结构/数据结构.png index 8e2be12..5528c47 100644 Binary files a/数据结构/数据结构.png and b/数据结构/数据结构.png differ diff --git a/数据结构/数据结构.xmind b/数据结构/数据结构.xmind index ffa5017..895d56e 100644 Binary files a/数据结构/数据结构.xmind and b/数据结构/数据结构.xmind differ