数据结构与算法
文章平均质量分 92
xiaocstudy
这个作者很懒,什么都没留下…
展开
-
数据结构和算法
数据结构和算法参考视频:尚硅谷Java数据结构与java算法(Java数据结构与算法)相关笔记了解稀疏数组,链表,队列和栈数据结构与算法:常见数据结构简单了解递归,学习相关的应用:迷宫问题和8皇后问题数据结构与算法:递归八大排序算法数据结构与算法:排序算法(冒泡,快排,选择,插入,shell,归并,基数).数据结构与算法:堆排序相关的查找算法以及哈希表的介绍顺序(线性)查找二分查找/折半查找插值查找斐波那契查找数据结构与算法:查原创 2022-01-25 10:32:41 · 467 阅读 · 0 评论 -
常用的十种算法:迪杰斯特拉算法,弗洛伊德算法,马踏棋盘算法
常用的十种算法八、迪杰斯特拉算法8.1 迪杰斯特拉(Dijkstra)算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。8.2 迪杰斯特拉(Dijkstra)算法过程设置出发顶点为 v,顶点集合 V{v1,v2,vi…},v 到 V 中各顶点的距离构成距离集合 Dis,Dis{d1,d2,di…},Dis集合记录着 v 到图中各顶点的距离(到自身可以看作 0,v原创 2022-01-20 17:09:48 · 1505 阅读 · 0 评论 -
常用的十种算法:贪心算法,普利姆算法,克鲁斯算法
常用的十种算法五、贪心算法5.1 贪心算法介绍贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果5.2 贪心算法最佳应用-集合覆盖广播台覆盖地区K1“北京”, “上海”, “天津”K2“广州”, “北京”, “深圳”K3“成都”, “上海”, “杭州”K4“上海”原创 2022-01-20 12:04:27 · 1325 阅读 · 0 评论 -
常用的十种算法:二分查找,分治,动态规划,KMP
常用的十种算法一、二分查找算法(非递归)1.1 二分查找算法(非递归)介绍前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找二分查找法的运行时间为对数时间 O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n 步,假设从[0,99]的队列(100 个数,即 n=100)中寻到目标数 30,则需要查找步数为㏒₂100 , 即最多需要查找 7 次( 2^6 < 100 <原创 2022-01-19 22:37:17 · 2157 阅读 · 0 评论 -
数据结构和算法:图
图一、图基本介绍1.为什么要有图前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点当我们需要表示多对多的关系时, 这里我们就用到了图。2.图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:3.图的常用概念顶点(vertex)边(edge)路径无向图有向图带权图二、图的表示方式图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)原创 2022-01-19 19:49:50 · 512 阅读 · 0 评论 -
数据结构与算法:多路查找树
一、多路查找树1.二叉树与 B 树1.1 二叉树的问题分析二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如 1 亿), 就存在如下问题:问题 1:在构建二叉树时,需要**多次进行 i/o 操作(**海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响问题 2:节点海量,也会造成二叉树的高度很大,会降低操作速度.1.2. 多叉树在二叉树中,每个节点有数据项,最多有两个子节点。如果原创 2022-01-19 12:23:59 · 278 阅读 · 0 评论 -
数据结构与算法:赫夫曼树,赫夫曼编码(压缩/解压),二叉排序树(BST),平衡二叉树(AVL)
树结构实际应用一、赫夫曼树1.基本介绍给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近2.赫夫曼树几个重要概念和举例说明路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为 1,则从根结点到第 L 层结点的路径原创 2022-01-19 11:29:35 · 400 阅读 · 0 评论 -
数据结构与算法:堆排序
一、堆排序1.堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆大顶堆举例说明小顶堆举例说明一般升序采用大顶堆,降序采用小顶堆2.堆排序基本思想将待排序序列构造成一个大顶原创 2022-01-18 23:59:49 · 705 阅读 · 0 评论 -
数据结构与算法:树结构的基础部分
树结构的基础部分一、二叉树1.为什么需要树这种数据结构1.1 数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图]画出操作示意图:1.2 链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历)操作示意图原创 2022-01-18 22:38:45 · 203 阅读 · 0 评论 -
数据结构与算法:查找算法与哈希表
查找算法一、查找算法介绍在java中,我们常用的查找有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找二、线性查找算法按顺序查找,找到满足条件的值就返回值或下标代码实现public class SeqSearch { public static void main(String[] args) { int arr[] = { 1, 9, 11, -1, 34, 89 };// 没有顺序的数组 int index = seqSearch(arr, -11);原创 2022-01-18 16:44:00 · 545 阅读 · 0 评论 -
数据结构与算法:排序算法(冒泡,快排,选择,插入,shell,归并,基数)
排序算法1.排序算法的介绍排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。1.1 排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类(见右图):[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lolwSJxT-1642476313562)(C:\Users\asus\AppDat原创 2022-01-18 11:43:57 · 356 阅读 · 0 评论 -
数据结构与算法:递归
递归1.递归应用场景看个实际应用场景,迷宫问题(回溯), 递归(Recursion)2 递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。3 递归调用机制我列举两个小案例,来帮助大家理解递归,部分学员已经学习过递归了,这里在给大家回顾一下递归调用机制打印问题阶乘问题使用图解方式说明了递归的调用机制代码演示public class RecursionTest { public static v原创 2022-01-17 15:30:34 · 215 阅读 · 0 评论 -
数据结构与算法:常见数据结构
常见数据结构一、数据结构简单介绍1.数据结构和算法的关系数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。程序 = 数据结构 + 算法数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。2.线性结构和非线性结构数据结构包括:线性结构和非线性结构。2.1 线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构,即顺序存储结构原创 2022-01-16 21:13:53 · 905 阅读 · 0 评论