首页
AI Coding
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
数据结构与算法
饺子泡牛奶
创建于2022-11-06
订阅专栏
数据结构与算法基础的笔记整理。
暂无订阅
共22篇文章
创建于2022-11-06
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
求最短路径算法
一、迪杰斯特拉算法 1.1 算法介绍 迪杰斯特拉算法(Dijkstra 算法)是典型最短路径算法,用于计算一个节点到其它节点的最短路径,它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直
求最小生成树算法
一、基本概念 1.1 生成树 一个连通图可以有多棵生成树; 一个连通图的所有生成树都包含相同的顶点个数和边数; 生成树当中不存在环; 移除生成树中的任意一条边都会导致图的不连通, 生成树的边最少特性;
贪心算法
一、算法介绍 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。 贪心算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对接近最优解的结果。 二、应用场景-集合覆盖问题
KMP算法
一、暴力匹配算法 1.1 算法介绍 工作原理:它顺序地将子串与文本中的每一个字符进行匹配,直到找到完全匹配的子串或遍历完整个文本。 优点:易于实现和理解。 缺点:匹配效率不高,特别是在长文本和子串的情
动态规划算法
一、算法介绍 应用场景:动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等中取得
分治算法
一、分治思想 解题步骤: 分解:将要解决的问题划分成若干规模较小的同类问题; 求解:当子问题划分得足够小时,用较简单的方法解决; 合并:按原问题的要求,将子问题的解逐层合并构成原问题的解。 经典问题:
二分查找算法(无递归)
1.1 算法介绍 查找思路: 二分查找的基本思想是将n个元素分成大致相等的两部分,取array[mid]与target做比较,如果target == array[mid],则找到target,算法中止
图
一、图的相关概念 1.1 基本介绍 线性表局限于一个直接前驱和一个直接后继的关系; 树也只能有一个直接前驱也就是父节点; 当我们需要表示多对多的关系时, 这里我们就用到了图。 1.2 举例说明 图是一
多路查找树
一、二叉树与B 树 1.1 二叉树问题 示意图: 二叉树是需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如 1 亿),就会存在如下问题: 问题 1:在构建二叉树时,需
平衡二叉树
一、相关概念 1.1 问题引出 需求:给你一个数列{1,2,3,4,5,6},要求创建一棵二叉排序树(BST)。 存在问题分析: 左子树全部为空,从形式上看,更像一个单链表。 插入速度没有影响。 查询
二叉排序树
一、相关概念 二叉排序树:BST: (Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 示意图:
赫夫曼树
一、赫夫曼树 1.1 基本介绍 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树/霍夫曼树(Huffman Tr
堆排序
一、相关概述 1.1 基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。它的最坏最好平均时间复杂度均为 O(nlogn),它属于不稳定排序(即:在排序过程中,如果两个键的
树(基础部分)
一、二叉树 1.1 为什么要使用树? 数组存储方式: 优点:通过下标方式访问元素,速度快,并且对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移
哈希表
一、哈希表 1.1 概述 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的
查找
一、线性查找 1.1 概述 线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不
排序
一、排序算法 1.1 概述 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 它是《数据结构与算法》中最基本的算法之一。 1.2 分类 内部排序:指将需
递归
一、递归 1.1 概述 程序调用自身的编程技巧称为递归(recursion)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模
栈
一、栈 1.1 概述 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(Stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删
链表
一、链表 1.1 概述 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一系列结点组成(链表中每一个元素称为结点),结点可以在运行时动态生
下一页