自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 新手在写第一篇SCI应当注意到哪些问题?

以上的问题都是作者在写第一篇论文时所踩过的坑,出现的错,写出来的目的是提醒自己或供他人参考。其实整篇文章说的就只有一个重点,那便是规范!规范!规范!从开始写的每一句就严格规范,那么一定可以在后期改的时候事半功倍。要是开局乱来,后期再改,只能说会血压升高,漏洞百出!

2024-05-27 20:15:08 645 1

原创 周报1_20230707

信息熵是信息论中的一个概念,用于衡量一个随机变量的不确定性或信息量的平均值。它是由香农于1948年提出的,被广泛应用于信息理论、统计学和通信领域。在信息论中,一个随机变量的熵表示为H(X),其中X是该随机变量。熵的单位通常用比特(bits)来衡量,也可以用纳特(nats)或其他适当的单位。Hx−ΣPxlog⁡PxHx−ΣPxlogPx其中,PxP(x)Px是随机变量X取值为x的概率,Σ\SigmaΣ表示对所有可能的取值求和,log⁡\loglo。

2023-07-07 21:06:33 2026 1

原创 论文写作心得

1

2022-12-16 01:14:10 322 1

原创 日撸代码300行学习笔记 Day 54-55

1.基于 M-distance 的推荐这是老师和学姐曾经发表过的一篇论文,主要是讲解关于评分系统的一个算法。

2022-05-15 16:24:08 407

原创 日撸代码300行学习笔记 Day 51

1. KNN算法这一段时间由于出门了,耽搁了几天的时间,现在开始继续做。在上周周六的课上,老师在为我们讲解机器学习的一些基础算法,虽然说是基础,但是也是很常用的方法,例如这个KNN。机器学习的本质实际上就是猜,其中最重要最核心的内容就是:如何去猜。在这个地方,引用什么是KNN算法?核心思想是,通过测量不同特征值之间的距离来进行分类。其中距离就有闵可夫斯基距离,欧氏距离,曼哈顿距离,切比雪夫距离,余弦距离等。简单点来说,knn就是找出离测试点前n个距离最近的点,然后判断在这n个点,哪个样本的数量.

2022-05-05 21:16:27 1489 1

原创 日撸代码300行学习笔记 Day 50

1.比较各种查找算法① 顺序查找:顺序查找适合于存储结构为顺序存储或链接存储的线性表,从头依次扫描,时间复杂度为o(n)平均查找长度ASL = 1/n(1+2+3+…+n) = (n+1)/2②折半查找其序列必须是有序的,用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或查找结束发现表中没有这样的结点。时间复杂度为O(log2n)ASL≈log2(

2022-04-26 21:14:52 366 2

原创 日撸代码300行学习笔记 Day 49

1.归并排序归并排序与之前的交换,选择等排序思想不一样,归并的含义是将两个或两个以上的有序表组合成一个新的有序表,假定待排序表中有n个记录,则可将其视为n个有序的子表,每个子表长度为1,然后两两归并,得到n/2向上取整个,长度为2或者1的有序表。继续两两归并。一直重复,直到合并成一个长度为n的有序表为止,这种排序方法就称之为二路归并排序。2.代码/** ********************* * Merge sort. Results are stored in the membe

2022-04-24 12:23:06 115 2

原创 日撸代码300行学习笔记 Day 48

1.堆排序堆排序的思路比较简单,首相将n个元素建成初始堆,由于堆本身的特点(以大顶堆为例),堆顶元素就是最大值。输出堆顶元素后,通常将堆底元素送上堆顶,此时根节点已不满足大顶堆的性质。堆被破坏, 将堆顶元素向下调整使其继续保持大顶堆的性质,再输出堆项元素。如此重复,直到堆中仅剩一个元素为止。可见堆排序需要解决两个问题。如何将无序序列构造成初始堆?②输出堆顶元素后,如何将剩余元素调整成新的堆?堆排序的关键是构造初始堆。n个结点的完全二叉树,最后一个结点是第n/2向下取整个结点的孩子。对第n/2向下取整

2022-04-23 11:48:13 703 2

原创 日撸代码300行学习笔记 Day 47

1. 简单选择排序简单选择排序顾名思义,思想真的很简单,每一趟排序中选择关键字最小的元素与其交换,每一趟排序就可以确定一个元素的最终位置,这样,经过n-1趟排序就可使整个排序表有序。2. 代码/** * *********************************** * @Title: selectionSort * @Description: Selection sort * @param: * @return: void

2022-04-22 11:53:09 264 1

原创 日撸代码300行学习笔记 Day 46

1.快速排序快速排序的思想是基于分治法的。每一次排序过后,都会确定一个数的位置,然后这个数的左边元素,全部小于这个数。而右边的所有元素中,全部大于这个元素,在确定这个元素的位置过后,分别对两个子序列进行相同排序,这也就形成了递归的过程。跳出条件为左大于等于右,此时也就代表着子序列排序完成。2.代码/** * *********************************** * @Title: quickSortRecursive * @Description:

2022-04-21 11:58:53 1077 2

原创 日撸代码300行学习笔记 Day 45

1.冒泡法排序运行思想就是每一次后当前元素和后一个元素相比,如果大于后面的元素,则交换位置,以此循环,每次可以确定一个元素的最终位置。最坏的时间复杂度为O(n²),这种排序方法只适合于数据量较小的时候,效率也较为低下。2.代码因为之前自己用C写过冒泡排序的代码,也还有些记忆,就先自己尝试着写了下public void bubbleSort1() { DataNode tempNode; for (int c = 0; c < length; c++) { for (in

2022-04-19 15:53:39 251 1

原创 日撸代码300行学习笔记 Day 44

1.希尔排序该排序方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的。2.代码/** * *********************************** * @Title: shellSort * @Description: ..

2022-04-19 11:59:05 1010 1

原创 JAVA学习笔记 this

1.thisthis关键字在java中有多种使用方法,其中以下三种是常用的方法。①:调用 成员属性:语法: this.成员属性 ------更好的区分 重名的局部变量例如:程序语句赋值时,是将右边的值赋给左边,而在上图的函数中,效果实际相当于形参name = 形参name,而实际上并没有达到我们想要的形参给实参赋值名字的结果。这时我们就需要在左边name前面加上this关键字,这样就可以很好的区分成员属性和局部变量了。②:调用 成员函数语法 this.成员函数publi

2022-04-17 17:27:54 369

原创 日撸代码300行学习笔记 Day 43

1.插入排序基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。2.代码/** * *********************************** * @Title: insertionSort * @Description: * @param: * @return: void *********************************** */ public voi

2022-04-17 13:01:24 580 3

原创 日撸代码300行学习笔记 Day 42

1.哈希表哈希表又称为散列表,是根据关键值(key)来直接进行访问的数据结构。最大的特点也就是以空间换时间,这也代表着需要大量的存储空间。1.1构造方法常见的构造方法有好几种,例如:1.1.1直接定址法:这个方法就像直接用散列函数,例如y=a*x+b,其适合关键字的分布基本连续的情况,如果不连续的话,空位就会较多,会造成空间的浪费。1.1.2 除留余数法:这个是最常见最常用的方法,假定散列表表长为m,取一个不大于m但最接近于m的质数p,散列函数为H(key)= key % p

2022-04-15 21:50:51 189 2

原创 日撸代码300行学习笔记 Day 41

1.顺序查找与折半查找在0这个位置,设定的有一个监察哨,查找起来会节约很多的时间。直接通过key值来判断,比较简单吧。2.代码/** * */package search;/** * * @author leeyz_1@163.com */public class DataArray { class DataNode { int key; /** * the data content */ String content; DataNode(

2022-04-14 11:08:04 88 3

原创 日撸代码300行学习笔记 Day 40

总结1.这10天里面,都是图相关的内容,难度可以说也是很大。这一部分最明显的感受就是:一定要用手去运算,再结合代码,要不然会想不通。2.边查边学,很多代码中的用法都没见过,比如说throws,exception等等,结合代码进行补齐。3.理论上这是10天的学习任务,但是对于图这一部分,我觉得10天来说是完全不够的,有些赶进度,大部分只是搞懂了原理以及老师是怎么实现的,让我自己来实现,目前来说能力还是不够的。4.目前这个阶段来说,对于学习,理解老师的代码,目前速度比以前快了很多了,变得更加熟练

2022-04-13 17:52:26 438 2

原创 日撸代码300行学习笔记 Day 38

1. Dijkstra 算法Dijkstra算法是求起点到所有顶点间最短路径的一个算法,其思想是由贪心思想实现。主要特点就是以起点作为中心,逐渐向外层节点进行扩散,直到所有节点全部走完。曾经在一些数学建模题里面,经常会用到这个算法,这也是最基础最经典的一个算法,在很多课程里面都有讲解,例如数据结构,图论等。2. prim算法Prim算法从任意一个顶点开始,每次选择一个与当前顶点集最近的一个顶点,并将两顶点之间的边加入到树中。其思想也是属于贪心,这个相较于Dijkstra要简单一些。3.代

2022-04-11 11:10:38 379 2

原创 日撸代码300行学习笔记 Day 37

1.十字链表十字链表是为了便于求得图中顶点的度(出度和入度)而提出来的。它是综合邻接表和逆邻接表形式的一种链式存储结构。图的话就不上了,应该都知道这玩意是个怎么回事。一般来说十字链表的存储结构是由三个域构成,data域,In的指针域,out的指针域构成。在下面的代码中,老师给的存储结构是包含了节点的行,列两个数据。直接从数组读取过来的行列吧。package graph;/** * * @author leeyz_1@163.com */public class Orthogona.

2022-04-10 13:09:30 381 2

原创 日撸代码300行学习笔记 Day 36

1.邻接表当我们存储图中的数据中时,如果顶点较多,而边数较少时,使用邻接矩阵来存储将极大的浪费空间,而为了解决这种浪费,提出了一种新的存储方式:邻接表。顾名思义,这种存储方式是依据链式存储的方式从而实现的。将图中的顶点使用一个一维数组进行存储,表中各个节点由data域和next指针域组成,其中data是用来存储节点编号信息,next指向下一个邻接点。2.代码在之前的图的广度优先遍历中,使用的是for循环而今天邻接表中将其forle循环改成了while循环具体代码如下: pack

2022-04-09 12:46:55 368 2

原创 日撸代码300行学习笔记 Day 35

1.回溯法简单点来说,就是想问题转换为图或者树的结构来表示。使用深度优先遍历,在遍历的过程中寻找问题的解。实现方法就是最常见的递归和迭代。这是一种暴力的解法,挨个查一遍。就像走迷宫一样,你也不知道前面能不能通,先走到底,如果不通,再回来走其他路。...

2022-04-08 11:57:41 296 3

原创 日撸代码300行学习笔记 Day 34

1.图的深度优先遍历深度优先遍历是使用的栈来实现,整个过程和昨天的相似。在这个深度遍历之中,并不是采用递归的方式来实现的,而是通过while循环,并直接将条件设为了true,这样就可以不断的循环。为了停止循环,在出栈的时候增加if语句,如果栈空,则break跳出while,最终实现图的深度遍历。/** * *********************************** * @Title: depthFirstTraversal * @Description: 深度

2022-04-06 20:16:54 81 1

原创 日撸代码300行学习笔记 Day 33

1. 图的广度优先遍历和以前的树有点点类似吧,不过具体代码又有些不同。这一段是接上循环队列以及前两天的代码。/** * *********************************** * @Title: breadthFirstTraversal * @Description: * @param: @param paraStartIndex The start index * @param: @return The sequence of .

2022-04-05 12:34:34 83 2

原创 日撸代码300行学习笔记 Day 32

1.图的连通性检测在这个连通性检测在中,大致原理是这样的:令图的连通矩阵为M,为单位矩阵,只需计算,其中n是节点个数,中第行第列元素为0的话,表示从节点到节点不可达。该方法,参考离散数学的图论基础,还在学习之中。package graph;import tree.IntMatrix;//不小心扔到树里面去了.../** * * @author leeyz_1@163.com */public class graph1 { IntMatrix connectivityMatr.

2022-04-03 13:36:23 107 3

原创 日撸代码300行学习笔记 Day 31

1.整数矩阵及其运算1.1 getter和setter在这一段代码中,出现了常见的getter,setter的方法, 目的是为了访问控制。在使用这种方法后,必须通过引用.方法来进行访问,并且也可以在方法里面写明限制的条件。1.2 Exceptionexception和error虽然同属于错误,但是存在很大区别。举个例子,exception,在路上开车的时候,如果遇见堵车堵死,我们或许可以选择走辅道进行通行,意味着还有方法来挽救,而error,就像在路上自己的车给撞报废了,没法动了,出现...

2022-04-02 20:20:47 378 2

原创 日撸代码300行学习笔记 Day 30

1.前言主要继续完成哈夫曼树的部分,主要实现具体应用中,编码以及译码的实现。 public void generateCodes() { huffmanCodes = new String[alphabetLength]; HuffmanNode tempNode; for (int i = 0; i < alphabetLength; i++) { tempNode = nodes[i]; // Use tempCharCode instead of ...

2022-03-31 20:40:25 500 1

原创 日撸代码300行学习笔记 Day 29

1.前言在之前的学习中,主要实现了哈夫曼树节点的构造以及数据文本的写入,今日继续对哈夫曼树的构造进行学习。2.Huffman 编码 (建树)在哈夫曼树的构造原理中,最核心的观点就是:所有叶子结点的带权路径长度之和最小。然后根据这一原理,我们要将算法详细讲解为这种:我们应该尽可能地让权值大的叶子结点靠近根结点,让权值小的叶子结点远离根结点今日的主要代码部分为:字母表的映射构造,哈夫曼树的构造。3.字母表的映射构造Step 1-2: public void constr

2022-03-30 19:17:46 158

原创 日撸代码300行学习笔记 Day 28

目录1.Huffman 编码 (节点定义与文件读取)2.代码2.1 newBufferedReader2.2 try catch2.3Collectors3.总结1.Huffman 编码 (节点定义与文件读取)对于哈夫曼树,说简单一点,其就是带权路径长度最短的树。定义:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。2.代码在这.

2022-03-09 18:47:15 1129 3

原创 日撸代码300行学习笔记 Day 27

1.Hanoi塔问题关于这个hanoi塔的问题,引荐这篇文章Hanoi塔问题分析,在此之前我也是没有听说过这玩意,第一次接触,单论执行方法来说,好像挺简单的,但是将其转换为代码来做的时候,逻辑思考就需要想的比较深。2.代码这个代码非常短啊, 但是很打脑壳啊,执行这个代码的时候,一定要盯着这张图,才不至于在递归里面迷路。这玩意有个规则啊,每次挪动过后,不能大的盘子在小的盘子上面啊,要不然直接全部进B,然后再全部倒着进C就完成了。最开始没注意到这一点,造成了一些疑惑。因为下面代.

2022-03-07 23:17:50 227 3

原创 日撸代码300行学习笔记 Day 39(考察)

1.关键路径在带权有向图中,以顶点为事件,以有向边表示活动,以边上的权值表示完成该活动的时间,称之为用边表示活动的网络,简称AOE网。AOE网和AOV网都是有向无环图,不同之处在于他们的边和顶点所表示的含义不同,AOE网的边是有权值,AOV网中的边没有权值,仅代表顶点之间的前后关系。两个性质:只有在某顶点所代表的事件发⽣后,从该顶点出发的各有向边所代表的活动才能开始; 只有在进⼊某顶点的各有向边所代表的活动都已结束时,该顶点所代表的事件才能发⽣。 另外,有些活动是可以并⾏进⾏的在AOE网中仅

2022-03-06 21:00:59 96 1

原创 日撸代码300行学习笔记 Day 26

1.二叉树深度遍历的栈实现 (前序和后序)与昨天类似,只增加了相应的部分代码。//栈,先序 public void preOrderVisitWithStack() { ObjectStack tempStack = new ObjectStack(); BinaryCharTree2 tempNode = this; while (!tempStack.isEmpty() || tempNode != null) { if (tempNode != null) { .

2022-03-05 22:20:18 268 3

原创 日撸代码300行学习笔记 Day 25

1.二叉树深度遍历的栈实现 (中序)像之前一样,建立一个通用栈,以增加代码复用性,直接强制转换类型就行。1.1具有通用性的对象栈改写栈程序, 里面存放对象. 该程序应该放在 datastructure.stack 包内. 还是依靠强制类型转换, 支持不同的数据类型. 增加了 isEmpty() 方法来判断是否栈空1.1.1代码实现package tree;public class ObjectStack { /** * Circle int queue. * ...

2022-03-04 18:20:42 282

原创 日撸代码300行学习笔记 Day 24

1.前言在前面几天对树的代码懵懵懂懂的时候,自己确实被小小的折磨了一下,对于不懂地方,参考了许多资料以及老师曾经发的博客,对以前概念的错误理解以及对代码的理解有了更新的认识。2.二叉树的建立这一天的内容,是通过输入二叉树节点的值以及编号,逆向构建二叉树,首先通过一个线性表来存储所有节点,再进行链接。3.代码实现/* * ************************************ ************************************ */ /.

2022-03-03 21:40:26 326 1

原创 日撸代码300行学习笔记 Day 23

1.前言在昨天遇到的问题中,隔了一天重新来看,突然发现好像是自己瓜皮了。。。22天的代码应该是接在21号里面的,而不是单独令了一个类,再去调用21天的代码。。。。例如在初始化数组中,其getNumNodes并不是调用BinaryCharTree里的函数。。这种错误就导致我昨天想了一天都没想通到底哪出错了。。2.使用具有通用性的队列package tree;import java.util.Arrays;public class BinaryCharTree { char value

2022-03-02 22:56:57 335 1

原创 日撸代码300行学习笔记 Day 22

1.二叉树的存储

2022-03-01 18:01:40 212 1

原创 日撸代码300行学习笔记 Day 21

1.树树一种递归的数据结构。树是适合于表示具有层次结构的数据。树种的某个节点(除根结点外)最多只与上层的一个结点(父结点)有直接关系,根节点没有直接上层结点,因此在n个结点的树种有n-1条边,而树中的每个结点与下一层的零个或者多个结点(子女结点)有直接关系。① 度:树中一个结点的孩子的个数称为该结点的度,树中结点最大的度数称为树的度②高度:树的高度是树中结点的最大层数③路径:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,路径长度是路径上所经过边的个数2.代码实现..

2022-02-28 13:04:58 95 1

原创 日撸代码300行学习笔记 Day 20

1.Day20①面向对象与面向过程相比, 有哪些优势?面向过程是一种主函数为中心的思想,然后将解决问题的每一个步骤写出来,通过主函数按步骤调用相应的函数。面向对象的编程,是将问题分解为多个对象,然后描述对象的不同属性和行为。面向对象相比较于面向过程的优势我觉得有:首先编程思路变得更加清晰,方便人们更好的去理顺思路。程序模块化设计,方便后期维护,并且模块化也可以使代码方便重复使用。②比较线性表和链接的异同这里线性表是想指的是顺序表?链接是指链式存储?相同之处:同属于线性结构不同之处:顺

2022-02-27 12:39:09 249 2

原创 日撸代码300行学习笔记 Day 19

1.字符串匹配的基本实现package demo;public class MyString { // It is essentially a sequential list with char type elements. public static final int MAX_LENGTH = 10; int length; char[] data; // 创建一个空字符串 public MyString() { length = 0; data = new char

2022-02-25 17:55:30 154 2

原创 日撸代码300行学习笔记 Day 18

1.前言关于闵老师在开会时提到栈的特点,先进后出与后进先出存在一点区别,截止写这篇时,我还没有想到。。。让我再想想。。。。2.循环队列的基本实现

2022-02-24 17:22:12 404 2

原创 日撸代码300行学习笔记 Day 17

1.链队的基本实现在链队进行操作的时候,入队仅能在尾部操作,出队在头部操作。注意在出队时若已空,需要将尾指针重置到头指针的位置去。2.代码package demo;public class LinkedQueue { class Node { int data; Node next; // 节点定义 public Node(int paraValue) { data = paraValue; next = null; }// Of the constr

2022-02-23 13:43:05 305

空空如也

空空如也

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

TA关注的人

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