随笔分类 - Data Structures
摘要:Conception 算法过程 首先将块读入内存 接下来构造初始“归并段”,通过**内部排序使每两个块**(这取决于生成初始归并段的内存工作区大小)内关键字有序: 然后是不断的内部归并,直至排序完毕 第一趟归并(8个初始归并段 → 4个归并段) 第二趟归并(4段 → 2段) 第三趟归并 (2段 →
阅读全文
摘要:Selection Sort ”选择排序 “ ”每一趟将待排序的最小元素(或最大元素)加入有序子序列 “ 简单选择排序 算法实现 性能分析 Heap Sort ”堆排序 “ 在回顾一下6.006中对与堆的定义, 结合之前学到的二叉树的顺序存储就不难理解了 ”堆是一个顺序存储的完全二叉树“ 了解了大根
阅读全文
摘要:Sorting “除了时间复杂度、空间复杂度以外,稳定性也是评价排序算法性能的重要指标 ” “什么叫做稳定的排序算法?” ”排序算法的分类 “ Insertion Sort ”插入排序 “ ”每次将一个待排序的记录插入前面已排好序的子序列,直至全部记录插入完成 “ 直接插入排序 当前待插入元素为 L
阅读全文
摘要:key - value 键值映射 当多个关键字映射到同一个值时,则称发生了冲突,下面介绍一种解决冲突的方法: Chaining with hash “拉链法” 将映射值相同的关键字称为同义词,拉链法将同义词链接在一起 查找成功: 查找失败: ASL 查找成功: 查找失败: 实际上,上式中分子部分就是
阅读全文
摘要:B树 Def. Branches/Balance?,多路平衡查找树 二叉查找树 → m叉查找树 如何保证查找效率? 限制最小分叉数(除开根结点) 限制任何一个结点的子树高度都要相同 如果m叉查找树满足以上两点限制,它就是一棵B树: 正如其名,着重关注两点特性:多路(m叉,注意上下限),平衡(子树高度
阅读全文
摘要:顺序查找 有序表的顺序查找 如果事先知道表中关键字有序,则查找失败时,不用一直比较到表的另一端才能知道失败信息,从而降低顺序查找失败时的ASL 对于n个关键字,查找失败共n+1种情况(对应n+1个区间),上式假设对于n个结点的查找概率相同,则相应的n+1个失败情况也等可能(p=1/(1+n)) 如果
阅读全文
摘要:Def. 无向图 & 有向图 简单图 & 多重图 之后的图均为简单图 顶点的度 连通图和强连通图 SubGraph 连通分量 & 强连通分量 连通分量针对无向图,强连通分量针对有向图 生成树 & 生成森林 带权图 & 带权路径长度 Tips:注意区分这里的带权路径长度和哈夫曼树中结点的带权路径长度:
阅读全文
摘要:What is it? Attempt_1 要找到指定节点p在中序遍历序列中的前驱: 再次遍历,设置两个工作指针pre和q分别指向前一个访问的结点和当前访问的结点 直到q指向指定结点p,此时pre即为前驱 Attempt_2 n个结点的二叉树拥有(n+1)个空链域,利用这些空链域来提供线索,即形成了
阅读全文
摘要:二叉树的遍历 前序、后序、中序遍历 递归实现: https://github.com/AndyLeezCode/ClionProjects/tree/master/hello 层序遍历 层序遍历 每访问一个结点,将其孩子结点入队 根据遍历序列构造二叉树 需要注意的是,某种遍历序列相同的两棵二叉树不一
阅读全文
摘要:今天开始学习一种新的逻辑结构 —— 树 树的基本概念 树的属性描述 树 V.S 森林 小结 常考性质 结点数=总度数+1 度为m的树 v.s m叉树 小结 二叉树 基本概念 几个特殊的二叉树 满二叉树 和 完全二叉树 二叉排序树 平衡二叉树 小结 二叉树的常考性质 完全二叉树的常考性质 因为完全二叉
阅读全文
摘要:KMP算法 对KMP算法的优化,在 next 数组基础上稍加更改得到 nextval 数组 小结
阅读全文
摘要:Stack Don't forget: 学习一个数据结构总是从三要素出发,当我们给出这个数据结构的逻辑结构并定义好它的基本运算时,我们就算是定义了这个数据结构(同时也定义了这样一个ADT),最后当我们确定了它的实现方式,即存储结构时,我们就实现了这个数据结构 定义 基本操作 小结 接下来讨论栈的存储
阅读全文
摘要:单链表 单链表和顺序表有何不同? 顺序表 通过 顺序存储 实现了 线性结构(逻辑结构) 单链表 通过 链式存储 实现了 线性结构 代码定义 本质上Lnode * L 和 LinkList L是一样的,有时为了更好的可读性会特意选择其中一种表示方法 不带头结点的单链表 带头节点的单链表 一般来说,带头
阅读全文
摘要:两个升序链表合并为降序链表 原文:https://blog.csdn.net/calculate23/article/details/97490628 注意算法中单次比较中大的一方下标不变,以此实现两两比较 看了原文解释后个人理解如下,问题的求解无非两步: 求时间复杂度的步骤: 考虑最坏情况下的执行
阅读全文
摘要:Linear List Definition 基本运算(操作) 值传递和引用传递 值传递相当于在函数test内部创建了x的副本,修改发生在新副本上而不影响原x的值 引用传递相当于给出对象的引用(内存地址),函数可以直接访问到地址指向的对象并对其操作 在java中,primitive(原始数据类型)均
阅读全文
摘要:如何表示复杂度? 时间复杂度只关注数量级,即对于一个复杂的表达式,可以忽略某些低阶部分 \[ T(n)= O(f(n)) 意味着当n趋近于∞时, lim(T(n)/f(n))的结果为一个常数k \] 取 f(n) 中随n增长最快的项,将其系数置1作为时间复杂度的度量。 两条运算规则 常见的渐进时间复
阅读全文
摘要:Introduce What is Algorithm? 算法是求解问题的*步骤*** 算法的特性 有穷性:一个算法必须在有穷步后结束,每一步必须在有穷时间内完成 算法有穷而程序无穷 确定性:每条指令不能有歧义,即无论运行多少次,相同的输入总能得到相同的输出 可行性:算法中描述的操作都可以通过已经实
阅读全文
摘要:数据结构在学什么? 408专业课之间的关系 数据,数据元素,数据项 数据结构,数据对象 数据结构注重数据元素间的关系,数据对象要求其中的数据元素具有相同性质 数据结构的三要素 数据的逻辑结构 可分为: 集合:类似数学上的集合,数据元素之间并无额外联系 线性结构:元素之间为一对一关系,除了头节点,所有
阅读全文
摘要:What it is? A stack is a one-ended linear data structures which has two primary operations,namely push and pop ( Last in First out ) Complexity Exampl
阅读全文
摘要:Introduction Singly & Doubly Pros and Cons Implementation Details Complexity Analysis Source Code of Doubly Linked List 详见github 测试结果:
阅读全文

浙公网安备 33010602011771号