随笔分类 - 数据结构与算法
摘要:1.概念 (1)它是一棵BST树 (2)节点是红色或黑色的(或者0,1) (3)根是黑色(黑色代表稳定,如果一棵树根都不稳了,就很容易倒掉了) (4)所有叶子都是黑色(这里的叶子节点指的是空节点) (5)每个红色节点必须有两个黑色的子节点(红色节点之间一定不能相连) (6)从任一节点到其每个叶子的所
阅读全文
摘要:1、先来了解概念 首先这是图的最小生成树(加权图) 在学习最小生成树之前需要先明确几个重要概念。(1)连通图:在无向图中,若任意两个顶点与都有路径相通,则称该无向图为连通图。(2)强连通图:在有向图中,若任意两个顶点与都有路径相通,则称该有向图为强连通图。(3)连通网:在连通图中,若图的边具有一定的
阅读全文
摘要:1、一句话概括什么是二叉排序树? 左边比根节点小,右边比根节点大,并且,左右子树都是二叉排序树 2、B+树查询的时间大概是多少? 这和树的高度相关,log(n) 3、hash存储索引,查询时间是多少? 平均时间O(1) 4、什么情况下使用平衡树? 在二叉排序树问题中,会出现一些极端的情况,比如插入序
阅读全文
摘要:1.磁盘原理 当磁盘需要读取某个地址数据的时候,首先会判断数据在哪个盘片上,确定好盘片之后呢,就开始选道,选道的过程就是通过伸展机械臂到数据对应的磁道(也就是圆环),再通过磁盘的旋转,找到对应的扇区,最后用磁头读取这几个扇区的数据到内存中去,因此可以看到读取磁盘数据是非常的耗时耗力的,尤其这里是机械
阅读全文
摘要:1.软件设计思想 分层 逻辑层:实现功能需求的, 物理层:用语言开发,性能方面,实现方式 如,数组(ArrayList)、单链表(LinkedList)(物理层)实现List接口(逻辑层),List接口具有一些增删改查的功能 二叉树,以数组形式实现 二叉树就是逻辑层,数组是物理层 树是一个非线性结构
阅读全文
摘要:1.二叉堆的介绍 二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。示意图如下: 二叉堆一般都通过"数组"来实现。数组实现的二叉堆,父节点和子节点的位
阅读全文
摘要:1.下面函数的复杂度是: 解析: 当n>=2时 foo(n)=n^2*foo(n-1)=n^2*(n-1)^2*foo(n-2)=...=n^2*(n-1)^2*...*2*foo(1); 递归n-1步,时间复杂度为O(n)。 2.对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是:
阅读全文
摘要:1.怎样才能构成排序算法的稳定性 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的
阅读全文
摘要:1.归并排序(Merge Sort)基本原理: 它的原理是假设初始序列有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两合并,得到n/2个长度为2或1的有序子序列;再两两归并,… … ,如此重复,直至得到一个长度为n的有序序列为止,这两排序方法就称为归并排序。 栗子1: 下列排
阅读全文
摘要:1.直接插入排序 时间复杂度O(n2) 工作原理: 通过构建有序序列,对于未排序数据,在已排序的序列中,从后向前扫描,找到相应的位置并插入。 插入排序在实现上,在从后向前扫描的过程中,需要反复把已排序元素逐步向后移动,为最新元素提供插入空间。 2.希尔排序 希尔排序是插入排序的一种高效率的实现,也叫
阅读全文
摘要:1.什么是直接选择排序? 直接选择排序(Straight Select Sort)是一种简单的排序方法,它的基本思想是:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换位置。 时间复杂度O(n2) 在排序时找到合适的关键字再做交换,并且只移
阅读全文
摘要:1.排序分为以下四类共七种排序方法: 交换排序: 1) 冒泡排序 2) 快速排序 选择排序: 3) 直接选择排序 4) 堆排序 插入排序: 5) 直接插入排序 6) 希尔排序 合并排序: 7) 合并排序 2.冒泡排序 时间复杂度O(n2) 其基本思想是:通过相邻元素之间的比较和交换,使关键字较小的元
阅读全文
摘要:1.什么是哈希技术? 哈希技术是在记录的存储位置和记录的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。 查找时,根据这个确定的对应关系找到给定值的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。 哈希技术既是一种存储方法,也是一种查找
阅读全文
摘要:1.二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况。 在最好的情况下,二叉排序树的查找效率比较高,是O(logn),其访问性能近似于折半查找 最差的情况是O(n),比如插入的元素是有序的,生成的二叉排序树就是一个链表,这种情况下,需要遍历全部元素才行。 【如图1】: 这样的
阅读全文
摘要:1.查找技术的分类。如下图: 2.什么是顺序查找呢?(无序表) 顺序查找的原理很简单,就是遍历整个列表,逐个进行记录的关键字与给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找失败。 时间复杂度是O(
阅读全文
摘要:1.什么是图的搜索? 指从一个指定顶点可以到达哪些顶点 2.无向完全图和有向完全图 将具有n(n-1)/2条边的无向图称为无向完全图(完全图就是任意两个顶点都存在边)。 将具有n(n-1)条边的有向图称为有向完全图。 无向图边数=节点数x2 n 个顶点的有向完全图有 n⋅(n−1)条边; 栗子1:
阅读全文
摘要:1.什么是线索二叉树? 在有n个结点的二叉链表中必定存在n+1个空指针域,因此可以利用这些空指针域存放指向结点的某种遍历次序下的前趋和后继结点的指针,这种指向前趋和后继结点的指针称为“线索”,加上线索的二叉链表称为线索链表,相应的二叉树被称为线索二叉树。 2.线索二叉树有何作用? 有了二叉树不就足够
阅读全文
摘要:1.树 需要注意的两点:n(n>=0)表示结点的个数,m表示子树的个数 (1)n>0时,树的根节点是唯一的。 (2)m>0时,子树的个数没有限制。 结点的度和树的度 (1)结点的度是指结点拥有的子树数 (2)树的度是指树的各结点的度的最大值 树的深度(Depth) 树中结点的最大层次 1 / \ 2
阅读全文
摘要:1.什么是线性表(List)? 零个或多个数据元素的有限序列。 (1)元素之间是有序的。 (2)线性表强调是有限的。 2.线性表有哪些操作? (1)线性表的创建和初始化,InitList (2)判空,ListEmpty(),true-空 (3)线性表重置为空表,ClearList() (4)获取线性
阅读全文