![](https://img-blog.csdnimg.cn/d02e3c212c0f4437add236c6ca3bc2a4.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 81
数据结构
鲨瓜2号
更多笔记:yzgc.top
展开
-
图(存储、遍历、应用)
图的定义:G=(V,E),图是包含顶点和边的集合V:顶点(数据元素)的有穷非空集合E:边的有穷集合类似于下图,G1由 V1、V2、V3、V4 四个顶点,四条边组成,G2 由五个顶点,七条边组成。其中G1中的边带有方向称为有向图, 不带方向的称为无向图完全图:任意俩个点都有一条边相连稀疏图: 有很少的边或者弧(有向图的边)比较少的图(n< nlogn)稠密图: 有较多的边或者弧网: 边/弧 带权的图邻接: 边/弧相连的俩个顶点之间的关系, 表示有向,vi -> vj顶点的度。原创 2024-04-24 17:12:38 · 364 阅读 · 0 评论 -
程序员常用的算法
一、二分查找算法(非递归) 1、二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 2、二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2^6 < 100 < 2^7)基本思想: 利用left指针(指向数组最左边)和right指针(指向数组最右...原创 2022-01-05 16:43:05 · 7264 阅读 · 0 评论 -
图的概念以及应用
一、为什么要有图?1、线性表局限于一个直接前驱和一个直接后继的关系2、树也只能有一个直接前驱也就是父节点3、当我们需要表示多对多的关系时, 这里我们就用到了图二、什么是图?图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:三、图的常用概念顶点(vertex):A,B,C,D,E边(edge): 顶点之间的连接线...原创 2021-12-26 19:26:01 · 1348 阅读 · 0 评论 -
树的介绍以及应用
目录一、树的介绍1、数组存储方式的分析2、链式存储方式的分析3、树存储方式的分析二、树的常用术语三、二叉树的概念四、二叉树的遍历1、二叉树的应用2、代码实现:五、顺序存储二叉树1、基本说明2、 顺序存储二叉树的特点:3、应用:4、代码实现:六、线索化二叉树1、基本介绍...原创 2021-12-28 21:43:39 · 1271 阅读 · 0 评论 -
排序算法--Sort Algorithm
一、排序算法的概念:排序也称排序算法 (Sort Algorithm),排序是将一 组数据,依指定的顺序进行排列 的过程二、排序算法的分类:1) 内部排序: 指将需要处理的所有数据都加载 到内部存储器中进行排序。2) 外部排序法: 数据量过大,无法全部加载到内 存中,需要借助外部存储进行 排序三、算法的时间复杂度 时间频度:一个算法中的语句执行次数称为语句频度或时间频度。记为T(n) 时间复杂度:一般情况下,算法中的基本操作语句的...原创 2021-12-23 23:14:42 · 1273 阅读 · 0 评论 -
搜索算法--Search Algorithm
在java中,我们常用的查找有四种: 1) 顺序(线性)查找 2) 二分查找/折半查找 3) 插值查找 4) 斐波那契查找一、线性查找 在数组中进行查找,找到返回下标,找不到返回-1 //线性查找 public static int seq(int[] array, int data) {...原创 2021-12-24 18:23:10 · 978 阅读 · 0 评论 -
数据结构--单向链表
一、链表的概念: 1.链表也是一个有序的列表 2.链表是以节点的方式存储数据,是链式存储 3.链表中每个节点包含俩部分:data域【保存数据】,next域【保存下一节点地址】 注意:链表中的节点并不一定是连续的head是头节点,头节点并不保存任何数据,只保存下一节点地址。可以看出 a1和a2并不是连续的a6是尾节点,他的next域是null。二、使用链表完成对水浒传英雄榜排名的管理【注意:在进行对链表的操作时,头节点不能...原创 2021-12-21 16:22:06 · 250 阅读 · 0 评论 -
数据结构--队列【用数组模拟队列】
一、队列的概念:队列是一个有序列表,可以用数组和链表来实现 遵循先进先出原则,与栈相反,栈遵循先进后出的原则二、用数组模拟栈的思路:队列的输出,输入是前后端分开处理的,因此需要俩个变量front, rear,帮助输入输出。增加数据rear指针加1,输出数据front指针加1 2.理解front和rear的变化,提供增加数据,取出数据,获取头部数据【不是取出头部数据】,显示队列的一些方法三、代码实现: 定义属性:【front和rear指针初始化指向队列的最底部】 ...原创 2021-12-21 13:18:35 · 302 阅读 · 0 评论 -
数据结构--栈
一、栈的概念 1、栈是一个先入后出的有序结构 2、栈是限制性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。 3、允许插入和删除的一段称为变化端,叫栈顶(Top),另一端叫栈底(Bottom),在栈的最低端。 4、压入元素在栈的最下端,称为压栈(Push),弹出元素从栈顶开始,称为弹栈(Pop)压栈弹栈图解:二、使用数组模拟栈【队列也是可以用数组模拟】 1、思路: ...原创 2021-12-22 17:05:41 · 929 阅读 · 0 评论 -
哈希表介绍
一、什么是哈希表1、哈希表也叫散列表,哈希表是一种数据结构,它提供了快速的插入操作和查找操作,无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1),因为哈希表的查找速度非常快,所以在很多程序中都有使用哈希表,例如拼音检查器。2、哈希表也有自己的缺点,哈希表是基于数组的,我们知道数组创建后扩容成本比较高,所以当哈希表被填满时,性能下降的比较严重。3、哈希表是由链表和数组组成的: 链表:增删的效率极高,但是查询的效率极低。 数组:查询效率极高,增删效率...原创 2021-12-26 16:09:46 · 6375 阅读 · 0 评论 -
数据结构--环形队列
一、环形队列的概念: 1.使用数组模拟队列,空间只能使用一次,不能重复利用。浪费空间。 2.使用环形队列可以重复使用。节省空间二、循环队列图解:三、数组模拟环形队列思路: 1.首先front和rear变量初始化不再指向 -1 ;而是指向 0【指向了第一个数据】 ;rear 最终指向的并不是最后一个位置,而是最后一个位置的前一个位置。要预留出来一个作为约定。【所以如果maxSize =4,其实只能存入3个数据】 2.当存入数...原创 2021-12-21 14:16:29 · 1128 阅读 · 0 评论 -
链表--双向链表
一、双向链表与单向链表有什么不同:原创 2021-12-21 17:50:54 · 321 阅读 · 0 评论 -
递归--八皇后问题
一、什么是递归? 1、 简单来说递归就是自己调用自己,每次调用都传入不同的变量。使用递归应确保有退出递归的条件,不然就会变成 "死鬼"【就是死循环,无限递归】2、当方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。二、使用递归解决八皇后的问题在一个 8*8 的棋盘上,依次放入8个皇后。保障每个皇后都不在同一行,同一列,或者同一斜线上。计算出有多少中摆法?思路: 1、...原创 2021-12-22 22:23:09 · 948 阅读 · 1 评论