自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 数据结构笔记汇总

学习的是尚硅谷韩顺平老师的课程。现将总结的笔记链接,整理如下:000.稀疏数组 001.数组模拟队列 002.数组模拟环形队列 003.单链表(插入、修改、删除) 004.单链表(新浪、腾讯、百度面试题) 005.双链表 006.环形链表 007.栈 008.前缀、中缀、后缀(逆波兰表达式) 009.中缀转后缀 010.递归(应用场景、机制) 011.递归(走迷宫、八皇后) 012.时间频度、(时间、空间)复杂度 013.常见的排序算法 014.交换排序(冒泡、快速) 01

2021-02-27 12:06:45 364

原创 Java学习笔记_00 HTML相关、Eclipse快捷键、相关设置、环境搭建

一、环境搭建我使用的是:Java1.6版本及相关JDK、eclipse相关工具包可在我上传的资源中自取。搭建Java开发环境步骤如下:1、下载并安装JDK。注意:测试当前电脑是否安装jdk或者搭建Java开发环境。在cmd中输入:javac:测试是否搭建Java开发环境java -version:显示当前Java(JDK)的版本号。(注意java 和-之间有个空格)下面就是傻瓜式安装:直接点下一步,建议:不要放在c盘,路径不要出现中文。2、配置环境变量:我的电脑—右键 ----属性---

2020-12-04 18:58:54 609 1

原创 计算机网络习题

概述体系结构题目时延相关题目[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A54aKIuX-1650203368066)(https://gitee.com/r2peak/picture/raw/master/2021-12-23/1640248095604-image.png)]发送时延:又称为传输时延,是指结点在发送数据时使数据块从结点进入到传输媒体所需的时间,也就是从数据块的第一个比特开始发送算起,到最后一个比特发送完毕所需的时间。

2022-04-17 21:50:12 2703

原创 计算机网络1-6合集

视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。笔记整理如下:思维导图图示说明1.1、计算机网络在信息时代的作用计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的一部分我国互联网发展状况中国互联网络信息中心 CNNIC1.2、因特网概述1、网络、互连网(互联网)和因特网网络:网络(Network)由若干**结点(Node)和连接这些结点的链路(Link)**组成。互连网(互联网)

2022-01-01 21:55:30 1248

原创 计算机网络-6应用层

视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。笔记整理如下:6.1、应用层概述我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地址来表示目的主机,从域名到IP地址的装转换,由属于应用层范畴的域名系统DNS,在后台帮用户完成常见的应用总结6.2、客户/服务器方式(C/S方式)和对等方式(P2P方式)概念客户/

2022-01-01 21:46:29 278

原创 计算机网络-5运输层

视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。笔记整理如下:运输层概述概念进程之间的通信从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。进程之间通信流程“逻辑通信”是指运输层之间的通信好像是沿水平方向传送数据,但事实上,这

2022-01-01 21:45:31 1510

原创 计算机网络-4网络层

视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。笔记整理如下:网络层概述简介网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可但是如果要将这些异构型网络互连起来,形成一个更大的互联网,就需要实现网络层设备路由器有时为了简单起见,可以不用画出这些网络,图中N1~N7,而将他们看做是一条链路即可要实现网络层任务,需要解决一下主要问题:网络层向运输层提供怎样的服务(“可靠

2022-01-01 21:44:00 1508

原创 计算机网络-3数据链路层

数据链路层概述概述链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)网络中的主机、路由器等都必须实现数据链路层局域网中的主机、交换机等都必须实现数据链路层从层次上来看数据的流动仅从数据链路层观察帧的流动主机H1 到主机H2 所经过的网络可以是多种不同类型的注意:不同的链路层可能采用不同的数据链路层协议数据链路层使用的信道数据链路层属于计算机网路的低层。数据链路层使用的信道主要有以下两种类型:点对点

2022-01-01 15:37:32 2611

原创 计算机网络-2物理层

视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。笔记整理如下:title: 计算机网络-2物理层date: 2021-12-23 19:34:31tags: 计网categories: 计算机网络cover: /img/mn5.png # 封面物理层的基本概念物理层下面的传输媒体传输媒体也称为传输介质或传输媒介,他就是数据传输系统中在发送器和接收器之间的物理通路。传输媒体课分为两大类,即导引型传输媒体和非导引型传输媒体传输媒体不属于计算机网络体系结构的任何一层。如果非要将

2021-12-30 13:14:32 522

原创 计算机网络-1概述

视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。笔记整理如下:思维导图图示说明1.1、计算机网络在信息时代的作用计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的一部分我国互联网发展状况中国互联网络信息中心 CNNIC<<< 左右滑动见更多 >>>1.2、因特网概述1、网络、互连网(互联网)和因特网网络:网络(Network)由若干**结点(No

2021-12-29 13:00:24 291

原创 数据结构笔记_49 贪心算法

一、简介二、实例思路一、穷举法思路二、贪心算法思路图解:allAreas 存放需要覆盖的所有地区,selects集合存放每一次比较后的最优解。首先经过key从K1比较到K5,发现K1的后面没有比K1 大的,所以把K1放入selects 集合中,并在allAreas 中删除掉K1所覆盖的城市,准备下一次的比较。在去掉第一轮中的城市后,开始第二轮比较,发现K2覆盖2个城市,是最多的,于是将maxKey指向K2,并将K2加入selects集合,在allAreas中删除K2包含的城市。拿

2021-03-12 23:57:51 387

原创 数据结构笔记_48 KMP算法

一、介绍传送门: 参考资料二、实例:1、分析思路图解:2、总结KMP步骤:先得到子串的部分匹配表(最长公共前后缀)再使用部分匹配表完成KMP匹配三、代码实操1、得到子串的部分匹配表再往上面填写,即可得到子串的部分匹配表(最长公共前后缀)。关于下面这行代码的由来:如下:首先,len - 1 ,然后 它这个位置上的数字,就是新的len这里的 1 代表匹配到的最长公共串的长度为1.2、使用部分匹配表完成KMP匹配测试:输出:完整代码:p

2021-03-12 00:10:13 425 1

原创 数据结构笔记_47 暴力匹配算法

先看一个暴力匹配法:2)的注释:i = i - (j-1),即从i 之前 匹配成功位置 的 下一个位置 开始匹配。暴力匹配示意图:暴力匹配算法虽然比较笨,但也不失为字符串匹配问题的一种解决方案。可以拿来跟后面的KMP算法作比较。代码+输出:package com.huey.kmp;public class ViolenceMatch { public static void main(String[] args) { // 测试暴力匹配 String str1 = "烦恼不.

2021-03-11 13:03:18 312 2

原创 数据结构笔记_46 动态规划(01背包问题)

一、简介:下面是算法的介绍:先看一个实例:背包问题二、实例图解:三、代码1、首先设置基础属性,并将表初始化。2、核心代码:输出:3、完整代码:package com.huey.dynamic;public class KnapsackProblem { public static void main(String[] args) { int[] w = { 1, 4, 3 };// 物品的重量 int[] val = { 1500, 3000, 2000 };//

2021-03-11 12:29:04 278 2

原创 数据结构笔记_45 分治算法(汉诺塔等)

一、简介二、基本步骤三、算法设计模式四、分治算法实例:汉诺塔演示:将盘子移动至C塔1、只有一个盘子时A到C,一步到位即可。2、有两个盘子时三步走。将A塔上面的所有盘移动到B塔;将A塔下面的盘子移动到C塔;把B塔的盘子移动到C塔。第一步: 将A塔上面的所有盘移动到B塔;第二步:将A塔下面的盘子移动到C塔;第三步:把B塔的盘子移动到C塔。3、有三个盘子时一样的思路:将A塔上面的所有盘移动到B塔;将A塔下面的盘子移动到C塔;把B塔的盘子移动到C塔。

2021-03-10 15:56:40 190

原创 数据结构笔记_44 二分查找(非递归)

二分查找算法(非递归)介绍:需要注意的是, 只有有序的数列才可以使用此算法。优点:非递归的方式,易于理解,且效率不错,节省开辟栈空间的开销了。代码实现:例:现有数组{ 1, 3, 8, 10, 11, 67, 100 },要求实现二分查找(非递归)测试:完整代码package com.huey.binarysearchnorecursion;public class BinarySearchNoRecur { public static void main(String[]

2021-03-10 13:47:50 186

原创 数据结构笔记_43 DFS和BFS的比较

二者差异:1、思想上:深度是每找到一个就从这一个开始,广度是始终从i开始向后找,直到以i开始没有相邻的。2、代码上:深度用递归,广度用队列。前面由于结点过少,看不出DFS和BFS在输出结果上的差别,通过下面这个例子看出来其差异。测试代码:输出:...

2021-03-10 00:14:46 201

原创 数据结构笔记_42 图的广度优先遍历(BFS)

lsdkfj

2021-03-09 23:59:59 228

原创 数据结构笔记_41 图的深度优先遍历(DFS)

一、何为图的遍历?二、DFS步骤:一条路走到黑,如果没走通,就回到最后一个节点的上一个节点,然后在这个节点换一条路再走。

2021-03-09 11:30:15 247

原创 数据结构笔记_40 图的创建

如题,上例子:思路分析:存储顶点String 使用Array List保存矩阵 使用 int [][] edges代码:package com.huey.graph;import java.util.ArrayList;import java.util.Arrays;public class Graph { private ArrayList<String> vertexList;// 存储顶点的集合 private int[][] edges;// 存储图对应的

2021-03-08 22:57:56 192

原创 数据结构笔记_39 图的基本介绍

一、为什么需要图?答:前面学习了线性表和树,线性表只有一个直接前驱和一个直接后继;树也只有一个直接前驱也就是父节点。当我们需要表示多对多关系时,就需要使用图了。二、图的简介三、图的常用概念四、图的表示方式图有两种表示方式:二维数组表示(邻接矩阵)、链表表示(邻接表)...

2021-03-08 21:40:42 150

原创 数据结构笔记_38 多路查找树(B树、B+树、B*树)

二叉树存在的问题分析:正是由于二叉树存在的这些问题,前人设计出了多叉树来解决相应的问题。多叉树:B树的基本介绍:一个结点中,存放着若干个数据项。2-3树基本介绍: 2-3树的创建,仍然遵守二叉排序树(BST)的规则。2-3树的案例:核心在于:构建2-3树的时候, 每添加一个结点时,都要时刻满足2-3树的要求。分布构建2-3树图示:下面的数组中,标红的字体,涉及到一个调整的问题。...

2021-03-08 21:10:05 161

原创 数据结构笔记_37 平衡二叉树(左、右旋转,双旋转)

简介:需要注意的是,平衡二叉树是建立在二叉排序树的基础之上的。是一种对二叉排序树的优化,以免出现下面类似的问题:平衡二叉树(AVL),其中 AV和L是发明者的名字首字母。在二叉排序树中,当右子树的高度比左子树高的时候,我们需要进行左旋转。左旋转的目的:降低右子树的高度。左旋转图解:????????????????????????????????????????????????????????????????????????????????????????????????????????

2021-03-07 22:04:40 629 2

原创 数据结构笔记_36 二叉排序树(删除)

图解删除二叉排序树节点的三种情况:第三种情况中,targetNode 右子树最小的节点刚好满足:大于左子树的所有结点 ,同时小于右子树其他剩余节点。类似的,左子树的最大结点也满足。下面代码取用找右子树的最小结点。1、第一种情况:删除叶子结点查找要删除的结点(Node类中):查找要删除结点的父节点(Node类中):这里写的时候出现的bug:其一是,判断当前节点是否是要删除的父节点时,第二个判断语句没有加括号,且this.right.value写成this.value简单在BinarySort

2021-03-07 13:26:36 390 1

原创 数据结构笔记_35 二叉排序树(创建、遍历)

二叉排序树简介:对于二叉排序树来说,中序遍历恰巧就是升序。代码:1、创建Node结点在Node结点中的add方法,无需考虑根节点是否为空,待会在BinarySortTree 类中的add方法中判断一下即可。同理,中序遍历的方法亦是如此。2、创建二叉排序树测试:...

2021-03-07 09:16:33 271 1

原创 数据结构笔记_34 赫夫曼编码压缩、解压文件

前言:自己压缩的文件哭着也要解压出来~~????弹幕有个hxd说:“压缩了老婆,解压不了了。”好家伙,好家伙,好家伙。前面学习了通过赫夫曼编码对一个字符串进行编码和解码,下面来完成对文件的压缩和解压。具体要求:对一张图片文件进行无损压缩。这里使用到了IO的知识:以对象流的形式写入,以对象流的形式读出。思路:Created with Raphaël 2.2.0读取文件得到哈夫曼编码表完成压缩~源码:测试:src 是本人照片,src2 是 这样的,全白背景中的笔画。可以看出,只有

2021-03-06 23:18:33 444

原创 数据结构笔记_33 赫夫曼解码

补码:正数的补码是其本身,负数的补码是其取反加一。为何补码可以简化计算机的设计。对于人脑而言,做du加减题时,第一反应zhi就是根据符dao号位,来选择对真值区域zhuan的加减。但是计算机而言,像加减乘除这类最最基础也是应用得最频繁的基本运算,在物理逻辑的设计上一定要设计的尽量简单。如果让计算机也先判断符号位再分别做加或者减的运算的话,会使得计算机的电路设计变得较为复杂。人类发明了将符号位也参与进运算的方法来。对shu于计算机而言,不管是加法还是减法,都统一用加法来做运算,可以使得计算机的设计变得

2021-03-06 21:19:20 179 4

原创 数据结构笔记_32 生成哈夫曼编码表、压缩后的字节数组

思路:将赫夫曼编码表存放在Map<Byte,String> 形式:32->01,97->100,100->11000等等。[形式]在生成赫夫曼编码表时,需要去拼接路径,定义一个StringBuilder 存储某个叶子结点的路径。代码:测试:...

2021-03-06 15:36:26 357 1

原创 数据结构笔记_31 哈夫曼编码(含创建哈夫曼树)

一、霍夫曼编码基本介绍:二、通信领域中几种信息的处理方式:1.定长编码:原理是将字符对应的ASCLL码转换成二进制后传输信息。缺点:需要存储大量的二进制数据太浪费时间,空间了。比如,空格的ASCLL码值为32,转换成二进制,如图:2.变长编码:缺点:匹配的时候,存在多义性。例如,10110。既可以分解成1,0,110也可以分解成10,110亦可以是101,10.3.哈夫曼编码:注意,这个赫夫曼树根据排序方法不同,也可能不太一样,排序方法的不同是啥意思?比如说有可能会出现

2021-03-05 13:19:47 699 3

原创 数据结构笔记_30 哈夫曼树(Huffman Tree)

一、Huffman Tree 简介给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二又树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。二、常见概念:路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1结点的权:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权

2021-03-03 21:55:18 395 1

原创 数据结构笔记_29 堆排序

一、简介:堆排序是利用【堆】这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。注意:没有要求结点的左孩子的值和右孩子的值的大小关系。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。注意:没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。1、大

2021-03-03 14:07:07 264

原创 数据结构笔记_28 线索二叉树的遍历

先试试看原先的遍历方法:测试:出现死循环。因为原先的8号节点的左右指针是空的,这也是结束遍历的条件。但在线索化之后,这个结束条件就不成立了。所以,退不出去,就进入了死循环。综上:当线索化二叉树后,不能再使用原来的遍历方法。分析:由于线索化之后,各个节点指向有变化 ,因此原来的遍历方式不能使用,这时需要使用新的方式遍历线索化二叉树,各个节点可以通过线性方式遍历,因此无需使用递归方式,这样也提高了遍历的效率。遍历的次序应和中序遍历保持一致。接上文:会有疑问,例如:拿什么来区分节点指向的是左

2021-03-02 00:32:30 294

原创 数据结构笔记_27 线索二叉树的创建

先看一个问题:一、线索二叉树基本介绍:1)的注解:上面那个公式,可以理解成:未利用的指针 = 所有的可利用指针 - 已经利用的指针图中,8有个指针指向了3,因为是中序遍历,所以3是8的后继节点。3)的注解:以中序遍历为例,有如下数列:3的前驱节点就是8,而8没有前驱节点。4)的注解:类似的,中序遍历中,8的后继节点是3,6没有后继节点。二、思路分析:流程如下:图中8没有前驱节点,所以只有一个指向,即右指针指向后继节点3;图中3的左右指针已经充分使用了,所以不需要进行操

2021-03-01 22:16:54 355 2

原创 数据结构笔记_26 顺序存储二叉树

一、顺序二叉树的概念从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。二、特点:n:表示二叉树中的第几个元素。(和数组下标原则保持一致,从0开始,见上图)顺序二叉树通常只考虑完全二叉树第 n 个元素的左子节点为 2 * n + 1第 n 个元素的右子节点为 2 * n + 2第 n 个元素的父节点为 (n - 1) / 2...

2021-02-28 11:06:34 187

原创 数据结构笔记_25 二叉树删除结点

本节任务:如果删除的节点是叶子节点,则删除该节点如果删除的节点是非叶子节点,则删除该子树测试删除5号叶子节点和3号子树思路图解:规定:如果删除的节点是叶子节点,则删除该节点。如果删除的节点是非叶子节点,则删除该子树。 把判断root的逻辑写在BinaryTree二叉树的删除方法里,然后递归的逻辑写在HeroNode节点的删除方法里。思路:首先处理: 考虑如果树是空树,和如果只有一个root节点,则等价于将二叉树置空。 public void delNode(int no)

2021-02-28 10:25:20 298

原创 数据结构笔记_24 二叉树的前序、中序、后序查找

这一节,完成以下任务:编写前序、中序、后序查找的方法。使用三种方式,查找no为5的结点。分析每种查找方式,分别比较了几次。一、思路与前面遍历的思路类似,直接上思路图解:以 5号节点为例,不同顺序的查找方式,比较次数是不一样的。前序需要4次比较才能找到5号节点,中序3次,后序2次。二、代码1、三种查找底层代码// 前序遍历查找 /** * @param no 查找no * @return 找到就返回该Node,否则返回null */ public HeroNode p

2021-02-28 00:58:27 205

原创 数据结构笔记_23 二叉树的前序、中序、后序遍历(含重写toSring,this相关)

概念:前序遍历:先输出父节点,再遍历左子树和右子树。中序遍历:先遍历左子树,再输出父节点,再遍历右子树。后序遍历:先遍历左子树,再遍历右子树,最后输出父节点。小结:看输出父节点的顺序,就确定是前序,中序还是后序。遍历步骤:前序:根左右中序:左根右后序:左右根代码先创建一个 HeroNode 节点,里面包含基本属性、构造方法、各种遍历方法的底层代码。再定义 BinaryTree 二叉树,在二叉树中调用相关的接口。相当于节点提供具体的底层实现方法,树来进行调用。和前面的哈希表类

2021-02-27 22:50:44 302

原创 数据结构笔记_22 二叉树的概念和常用术语

节点:每个小圆圈就是一个节点,其实就是对象,有的人称之为节点对象。根节点:就是A,它上面没有父节点了。父节点:A是B、C的父节点。B、C、D同理,它们都有子节点。子节点:B、C是子节点,它们都有一个父节点A。而D、E、F、G、H同理。叶子节点:没有子节点的节点,例如:H、E、F、G.节点的权(节点的值):例如一个Emp雇员的编号为6,6就是它的权。路径:从root 节点找到该节点的路线。例如:H的路线就是ABDH。层:我们把在同一个级别的,或者说一个层面的,归结于同一层。A位于第1层、B、..

2021-02-27 12:41:13 629

原创 数据结构笔记_21 数组、链表、树存储方式分析

一、数组:集合ArrayList 的底层是数组。Arraylist 的底层操作机制源码分析二、链表三、树(以二叉排序树为例)简言之,树 集成了数组、链表的优点。

2021-02-27 11:47:29 155

原创 数据结构笔记_20 哈希表

先看一个google公司的上机题:一、简介:  散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。  给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。二、为何需要哈希表?   Jav

2021-02-26 23:50:14 196

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除