UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统的各种方面,如结构、行为、功能等。UML可以帮助软件开发人员更好地理解...
UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统的各种方面,如结构、行为、功能等。UML可以帮助软件开发人员更好地理解...
暴力匹配算法(Brute Force) 主串中检查起始位置分别是0、1、2...n-m且⻓度为m的n-m+1个子串,查找跟模式串相匹配 此算法字符串匹配方式比较简单、好懂...
特点 一种更加复杂的非线性数据结构 名词解释 顶点(vertex): 图中的元素 边(edge): 图中的一个顶点可以与任意其他顶点建立连接关系 度(de...
特点 堆是一种特殊树 前提条件 堆是一个完全二叉树 完全二叉树: 除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列 堆中每一个节点的值都必须大于等于(...
特点 数据结构的一种特殊应用 借助递归树来分析递归算法的时间复杂度 如果把这个一层一层的分解过程画成图,它其实就是一棵树,叫作递归树 如何用递归树来求解时间复杂度? ...
平衡二叉查找树 平衡二叉树中任意一个节点的左右子树的高度相差不能大于1 完全二叉树、满二叉树都是平衡二叉树,但非完全二叉树也有可能是平衡二叉树 平衡二叉查找树满足上面平...
树(Tree) 名词解释 节点:每个元素 父子关系:用来连线相邻节点之间的关系 父节点:A节点就是B节点的父节点 子节点: B节点就是A节点的子节...
特点 将任意⻓度的二进制值串映射为固定⻓度的二进制值串,这个映射的规则就是哈希算法 而通过原始数据映射之后得到的二进制值串就是哈希值 优秀的哈希算法前提条件 从哈希值不...
特点 散列表用的是数组支持按照下标随机访问数据的特性,是数组的一种扩展,由数组演化而来 关键词 键(key)或者关键字 散列函数(或“哈希函数”): Key转化为数...
分类 排序算法 时间复杂度 是否基于比较 是否稳定排序 是否原地排序 冒泡 O(n^2) ...
特点 比较优秀的动态数据结构,可以支持快速的插入、删除、查找操作,甚至可以替代红黑树 底层使用变种后链表来实现二分查找算法(因二分查找底层使用数组实现->数据随机访问特性...
简单实现:有序数据集合中不存在重复的数据,在其中查找值等于某个给定值的数据 分治思想,每次通过跟区间的中间元素对比,将待查找的区间缩小为一半,直到找到要查找的元素,或者区间...
桶排序(Bucket sort) 特点 将数据拆分到几个有序的桶里,每个桶里的数据再单独进行排序 桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列即为有序 ...
分类 排序算法 时间复杂度 是否基于比较 是否稳定排序 是否原地排序 冒泡 O(n^2) 是 ...
特点 递归是一种应用非常广泛的算法 递归代码表达力强、简洁、高效 其他数据结构和算法都会用到递归来编码,例如: DFS深度优先搜索、前中后序二叉树遍历 使用前提条件 ...
特点 先进先出 队头出队 < data < 队尾入队 一种操作受限的线性表数据结构 两种操作 入队enqueue: 放一个数据到队列尾部 出队dequeu...
特点 先进后出,后进先出 一种操作受限的线性表,只允许在一端插入和删除数据 两种操作: 入栈push和出栈pop 复杂度分析 空间复杂度为O(1) 时间复杂度...
链表: 通过指针将一组零散的内存块串联在一起 单链表 头结点(data | next) -> data | next -> 尾节点(data | next) -> nu...
数组特性 一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。特征: 1.线性表: 数据排成像一条线一样的结构。每个线性表上的数据最多只有前驱和后继...
大O复杂度表示法 一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率(代码执行的时间)的方法 所有代码的执行时间T(n)与每行代码的执行次数n成正比,公式:T(...