算法
会上树的小可爱
学生一枚。
展开
-
JAVA数据结构——利用图的广度优先遍历搜索算法确定无向连通图的连通分量
分析:如果这个无向图是非连通图的时候,从图的一个顶点没法访问这个图的所有顶点,只能访问包含该顶点的连通分量中的所有顶点。所以从无向图的每个连通分量中的一个顶点开始遍历图,则可求得无向图的所有连同分量。如图则是非连通的无向图,我们只需要从第一个和第二个连通分量进行遍历即可,先了解一下基础设想。从1-2-...n,我们可以把这个思路无限制扩大下去,实现若干个非连通图如何实现。我们采...原创 2020-03-30 11:56:50 · 4336 阅读 · 1 评论 -
JAVA数据结构——图
图:与线性结构和树形结构相比,图是一种更为复杂的数据结构,因为复杂所以也更好玩。在线性数据结构中,元素只能和他的前驱或者后继有关;在树形结构中,元素只能和其父节点或者子节点有关;然而图,他可以跟其他任意一个元素相关,这也就是图的魅力所在。图的应用:那么我们学图有什么用?我们在离散数学和数据结构中都接触了图的概念,但是图在生活中应用在那边呢?图的应用处于我们生活的处处面面,如:我们去超市...原创 2020-03-20 12:57:38 · 2164 阅读 · 0 评论 -
POI实现EXCEL导入
POI实现EXCEL导入:当我们对人员进行管理时候,往往需要批量导入用户,一个个录入就很麻烦了,所以Apache软件基金会开放了POI源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。基本功能:HSSF - 提供读写Microsoft Excel格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML格式档...原创 2020-02-13 21:18:24 · 9014 阅读 · 4 评论 -
JAVA数据结构——二叉树
树:树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。二叉树:如图,树的一种特殊的形式,他只有两个分支,即左子树和右...原创 2020-02-06 21:02:39 · 2659 阅读 · 0 评论 -
JAVA数据结构——串(三)
文本文件加密:利用JAVA数据结构——串对文本文件通过IO过滤使用异或运算进行加密。对文本文件加密的方法有很多,最简单莫过于通过异或运算对文本内容进行加密。假设a是一段是待加密的字符编码,k是密钥,则执行b=a^k,获得的b则就是加密后的编码。通过b和k再进行一次异或运算,它又回归成原来的明文字符编码。package com.usts.edu.string;import java...原创 2020-01-30 12:43:16 · 2975 阅读 · 0 评论 -
JAVA数据结构——串(二)
模式匹配:上节JAVA数据结构——串我们提出了模式匹配概念,他是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。假设P是给定的子串,T是待查找的字符串,要求从T中找出与P相同的所有子串,这个问题成为模式匹配问题。P称为模式,T称为目标。如果T中存在一个或多个模式为P的子串,就给出该子串在T中的位置,称为匹配成功;否则匹配失败。下...原创 2020-01-28 19:07:06 · 1140 阅读 · 0 评论 -
JAVA数据结构——串
串:什么是串?把若干单独个体连接在一起就是一个串。在数据结构中,我们使用的无论是顺序表或者是链表,都是讲个体链接在一起的方法,所以我们利用前面学习的知识,将个体连接在一起实现串的模式匹配(字串在主串中查找的过程),后面将介绍一种简单的子串查找算法BF算法(Brute-Force算法)和KMP算法。1. 串的概念 字符串简称串,是一种特殊的线性表,它的数据元素仅由一个字符组成。2. 串的...原创 2020-01-19 20:15:04 · 2560 阅读 · 0 评论 -
JAVA数据结构——队列(二)
素数环:根据上篇文章JAVA数据结构——队列我们留一下一个问题,如何利用队列解决素数环问题,下面我来讲解一下思路:1. 先映入顺序表类Sqlist 和 链队列类 LinkQueue ,在创建Sqlist类的一个对象L作为顺序表,用于存放素数环的数据元素,创建LinkQueue的一个对象Q,作为队列用于存放还未加入素数环的自然数2. 1加入L,2~n 加入Q。3. 将出队的队首元素P...原创 2020-01-17 20:27:59 · 1594 阅读 · 0 评论 -
JAVA数据结构——队列
链队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只...原创 2020-01-15 19:11:29 · 1869 阅读 · 0 评论 -
JAVA数据结构——栈(二)
使用栈完成回文数、字符串反转:根据上一篇文章JAVA数据结构——栈的一些特性完成回文数和串反转。判断回文数,JAVA帮我们封装了一些方法,我们只需要调用方法即可。如:String s = "123";char[] c = s.toCharArray();// 然后遍历后append进sb即可StringBuffer sb = new StringBuffer();sb....原创 2020-01-11 22:14:16 · 1075 阅读 · 0 评论 -
JAVA数据结构——栈
顺序栈:栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。因为栈的先进后出特性,所以我们可以用来做很多的工作,例如:我们判...原创 2020-01-09 17:17:54 · 1747 阅读 · 0 评论 -
JAVA数据结构——单链表
链表:一、 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间。并把原有的数据元素复制进新的存储空间。2. 因为顺序表要求数据的存储位置不仅是逻辑上相邻而且物理存储上也要相邻,所以当对数据进行增删操作的时候则会引起平均一半的数据元素移动。综上所述:适合静态存储、对...原创 2020-01-07 17:38:03 · 1979 阅读 · 0 评论 -
JAVA数据结构——顺序表
顺序表:一、 顺序表的特点:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。...原创 2020-01-05 18:10:29 · 3730 阅读 · 5 评论 -
数据库系统概论(第五版) 王珊 第四章课后习题答案
1 .什么是数据库的安全性?答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。2 .数据库安全性和计算机系统的安全性有什么关系?答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计...原创 2019-12-23 18:21:13 · 10931 阅读 · 0 评论 -
Python实现八大排序算法
八大排序算法Python实现:一、 插入排序描述:插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)...原创 2019-12-22 13:01:34 · 2404 阅读 · 0 评论 -
使用Comparator根据Map的value进行排序
使用Comparator根据Map的value进行排序:在写推荐系统时,使用到余弦相似度算法对用户进行推荐,里面需要根据value值对推荐由相似度高到底排序,所以撸了一个实现Comparator对map中value进行排序的工具方法。 public static Map<String, Float> sortMapByValue(Map<String, Float>...原创 2019-12-11 11:49:25 · 5200 阅读 · 0 评论 -
JAVA实现余弦相似度算法
余弦相似度算法: 余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关...原创 2019-12-11 11:40:10 · 12413 阅读 · 0 评论