摘要:
二分查找 1. 算法介绍 二分查找只适用于从有序的数列中进行查找,将数列排序后再进行查找 二分查找算法的运行时间为 O(log2 n),即 100 个数,最多需要 7 次:(2 ^ 6 arr[mid],则递归向右查找 findVal right 时,说明数组已经递归完毕,但是还没有找到! if(l 阅读全文
posted @ 2020-04-24 22:05
LEI_Z
阅读(967)
评论(0)
推荐(0)
摘要:
数据结构 图 一、基本介绍 图是一种数据结构,其中结点可以具有零个或者多个相邻元素。两个结点的连接称为边,结点也可以称为顶点 1.1 图的常用概念 顶点 边 路径 无向图 有向图 带权图 1.2 图的表示方式 邻接矩阵(二维数组) "逻辑结构" 分为两部分:V和E集合,其中,V是顶点,E是边。因此, 阅读全文
posted @ 2020-04-24 19:22
LEI_Z
阅读(614)
评论(0)
推荐(0)
摘要:
多路查找树 虽然二叉树的效率很高,但是也存在一些问题!二叉树是需要加载进内存的,倘若结点少无所谓,若有一亿个结点,就会有海量数据,会对速度造成影响 1. 多叉树 在二叉树中,每个结点规定最多有两个子结点,若允许每个结点可以有更多的数据项和子结点,那么就是多叉树 多叉树通过重新组织结点,减少树的高度, 阅读全文
posted @ 2020-04-24 19:21
LEI_Z
阅读(213)
评论(0)
推荐(0)
摘要:
平衡二叉树(AVL树) 上述二叉排序树和单链表一样,查询速度很慢,完全发挥不出来二叉排序树的优势,速度甚至比单链表还满 由此引出解决方案:平衡二叉树(AVL) 1. 基本介绍 平衡二叉树也称平衡二叉搜索树,AVL树,其可以保证查询效率较高 其特点是:它是一颗空树或者它的左右两个子树的高度差的绝对值不 阅读全文
posted @ 2020-04-24 19:19
LEI_Z
阅读(275)
评论(0)
推荐(0)
摘要:
二叉排序树 1. 基本介绍 二叉排序树:BST,对于二叉排序树的任何一个非叶子结点,要求左子结点的值比当前结点的值小,右子结点的值比当前结点的值大 特别说明:若有相同的值,可以将该结点放在左子结点或右子结点 2. 二叉排序树的创建和遍历 阅读全文
posted @ 2020-04-24 19:18
LEI_Z
阅读(245)
评论(0)
推荐(0)
摘要:
赫夫曼编码 1. 基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),也称霍夫曼编码,是一种编码方式,属于一种算法 赫夫曼编码也是赫夫曼树在电讯通信中经典的应用 赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间 赫夫曼码是可变字长编码(VLC)的一种。Huff 阅读全文
posted @ 2020-04-24 19:17
LEI_Z
阅读(570)
评论(0)
推荐(0)
摘要:
树的实际应用 赫夫曼树 1. 基本介绍 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树, 若该树的带权路径长度(wpl)达到最小 ,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),也称霍夫曼树 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 2. 重要概念 路径 阅读全文
posted @ 2020-04-24 19:15
LEI_Z
阅读(183)
评论(0)
推荐(0)
摘要:
树的实际应用 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序属于选择排序,其最好、最坏、平均时间复杂度均为 O(nlogn) ,他也是 不稳定排序 1. 堆介绍及最大最小堆 堆是具有以下性质的完全二叉树 每个结点的值都大于或等于其左右孩子结点的值,称为大项堆 每个结点的值都小于等于其 阅读全文
posted @ 2020-04-24 19:14
LEI_Z
阅读(409)
评论(0)
推荐(0)
摘要:
线索化二叉树 叶子结点的左右指针无法完全利用上,我们若想要充分利用各个结点的左右指针,让各个结点可以指向自己的前后结点,可以引入 线索二叉树 1. 基本介绍 n个结点的二叉链表中含有 n + 1 个空指针域,利用二叉链表的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(附加的指针称为 阅读全文
posted @ 2020-04-24 19:10
LEI_Z
阅读(354)
评论(0)
推荐(0)
摘要:
二叉树 每个结点最多只有两个子结点的树称为二叉树 ,二叉树的子结点分为左结点和右结点 二叉树的所有叶子结点都在最后一层,且结点 = 2 ^ n 1,则称之为满二叉树(n)为层数 二叉树的所有叶子结点都在最后一层或者倒数第二层,且最后一层的叶子结点左连续,倒数第二层叶子结点右连续,则称之为完全二叉树 阅读全文
posted @ 2020-04-24 19:08
LEI_Z
阅读(221)
评论(0)
推荐(0)
摘要:
数据结构 树 引入 数组存储方式通过下标方式访问元素,速度快,插入元素时效率很低,链式存储插入和删除时效率很高,但检索时效率又变低,故引入树结构,能够提高数据存储、读取的效率 树的常用术语 结点 根结点 父结点 子结点 叶子结点 结点的权(结点的值) 路径(根结点开始的路线) 层 子树 树的高度(最 阅读全文
posted @ 2020-04-24 19:05
LEI_Z
阅读(162)
评论(0)
推荐(0)
摘要:
排序算法 基数排序(桶排序) 基本介绍 基数排序(radix sort)属于“分配式排序”,又称为“桶排序”,他是通过键值的各个位的值,要将排序的元素分配至某些“桶”中,达到排序的作用,基数排序属于稳定排序,效率很高。 基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零,然后从最低 阅读全文
posted @ 2020-04-24 19:03
LEI_Z
阅读(210)
评论(0)
推荐(0)
摘要:
排序算法 归并排序 算法介绍 归并排序(merge sort)利用 归并 的思想,采用经典的 分治 策略完成。 算法思想 代码实现 java package cn.imut.sort; import java.lang.reflect.Array; import java.util.Arrays; 阅读全文
posted @ 2020-04-24 19:02
LEI_Z
阅读(166)
评论(0)
推荐(0)
摘要:
排序算法 快速排序 基本介绍 快速排序(Quicksort)是对冒泡排序的改进。 排序思想 通过一趟排序将数据分割为两部分 其中一部分要比另一部分都要小 以此类推,可以递归进行 示意图 代码实现 测试速度(八百万个数据) java public static void main(String[] a 阅读全文
posted @ 2020-04-24 18:59
LEI_Z
阅读(161)
评论(0)
推荐(0)
摘要:
排序算法 希尔排序 问题引入 插入排序中存在的问题: 若数据为 2 3 4 5 6 1,则后移的次数明显增多,很影响效率 希尔排序基本介绍 希尔排序是 希尔(Donald Shell) 于1959年提出的一种排序算法。 希尔排序也是一种插入排序 ,他是简单插入排序改进之后的一个 更高效的版本 ,也称 阅读全文
posted @ 2020-04-24 18:58
LEI_Z
阅读(197)
评论(0)
推荐(0)
摘要:
排序算法 插入排序 基本介绍 插入排序属于内部排序,是对要排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的 算法思想 把n个待排序的元素看成一个 有序表和一个无序表 开始时,有序表只含有一个元素,无序表中有n 1个元素 排序过程中每次从无序表取出第一个元素,把它的排序码依次和有序表元素的 阅读全文
posted @ 2020-04-24 18:57
LEI_Z
阅读(136)
评论(0)
推荐(0)
摘要:
排序算法 选择排序 基本介绍 选择排序(select sorting)也属于内部排序,是从要排序的数据中,按指定的规则选出来某一元素,再按规定交换位置后达到排序的目的 排序思想 第一次从arr[0] ~ arr[n 1]中选取最小值,与arr[0] 交换 第二次从arr[1] ~ arr[n 1]中 阅读全文
posted @ 2020-04-24 18:18
LEI_Z
阅读(150)
评论(0)
推荐(0)
摘要:
排序算法 冒泡排序 基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序顺序从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水中的气泡一样逐渐向上冒 因为排序的过程中,各个元素不断接近自己的位置, 若一趟比较下来没 阅读全文
posted @ 2020-04-24 18:14
LEI_Z
阅读(167)
评论(0)
推荐(0)
摘要:
排序算法介绍 基本介绍 排序也称为排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类 内部排序 指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序 常见的排序算法分类 常用的排序算 阅读全文
posted @ 2020-04-24 18:12
LEI_Z
阅读(222)
评论(0)
推荐(0)
摘要:
数据结构 算法复杂度 时间复杂度 事件频度 一个算法花费的时间与算法种语句的执行次数成正比,哪个算法种语句执行次数多,它花费时间就多。 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n) eg:计算1 100的和 方法一:for循环 T(n) = n + 1 方法二:直接计算 T(n) = 阅读全文
posted @ 2020-04-24 18:10
LEI_Z
阅读(210)
评论(0)
推荐(0)
摘要:
数据结构 八皇后问题 问题介绍 八皇后问题,是一个古老而著名的问题,是 回溯算法的经典案例 。 在8x8格的国际象棋上摆八个皇后,任意两个皇后都不能处于同一行、同一列、或同一斜线上,闻有多少种摆法 数学家高斯曾经认为有76种方案 思路分析 第一个皇后先放在第一行第一列· 第二个皇后放在第二行第一列、 阅读全文
posted @ 2020-04-24 18:02
LEI_Z
阅读(408)
评论(0)
推荐(0)
摘要:
递归 迷宫问题 一个8行7列的迷宫,最外侧都是墙,(3,1)(3,2)为挡板,小球从(1,1)出发,如何走到(6,5) 迷宫如下 1表示墙或者挡板,无法走 规定 若小球可以走的通路 标记2 规定 若小球已经走过,但是无法走通的点 标记3 规定地图没有走过的点, 标记为0 | 1 | 1 | 1 | 阅读全文
posted @ 2020-04-24 17:47
LEI_Z
阅读(1348)
评论(0)
推荐(0)
摘要:
数据结构 递归 问题引入:迷宫问题(回溯),递归 递归的概念 递归就是方法自己调用自己,每次调用时传入不同的变量, 递归有助于编程者解决复杂问题 ,同时可以让代码变得简洁。 递归调用机制 当程序指向到一个方法时,就会开辟一个独立的空间(栈) 每个空间的数据(局部变量),是独立的 递归解决的问题 各种 阅读全文
posted @ 2020-04-24 17:45
LEI_Z
阅读(172)
评论(0)
推荐(0)
摘要:
线性结构 栈 栈介绍 实际需求 输入表达式计算:7 2 2 5+1 5+3 3,计算机底层是如何得到的呢? 基本介绍 栈的英文为(stack) 栈是一个先进后出的 有序 列表 栈(stack)是限制线性表中元素的插入和删除 只能在线性表的同一端 进行的一种特殊线性表。允许插入和删除的一端,为变化的一 阅读全文
posted @ 2020-04-24 17:21
LEI_Z
阅读(156)
评论(0)
推荐(0)
摘要:
单向环形链表应用场景 约瑟夫问题(约瑟夫环) 设编号1,2,...n个人围坐一圈,约定编号为k[1,n]的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人出列,依次类推,直到有人出列为止,由此产生一个出队编号的序列。 假设n有5人,k = 1,从第一个人开始报数,m = 阅读全文
posted @ 2020-04-24 17:19
LEI_Z
阅读(350)
评论(0)
推荐(0)
摘要:
线性结构 链表 链表介绍 链表是有序的列表,在内存中的存储为: 链表是以节点的方式来存储 每个节点包含data域,next域:指向下一个节点 各个节点不一定是连续存储的 链表分带头结点和不带头节点,根据实际需求来确定 单链表应用 使用带头节点的单向链表实现水浒传英雄排行榜 方法一、添加英雄时,直接添 阅读全文
posted @ 2020-04-24 16:53
LEI_Z
阅读(182)
评论(0)
推荐(0)
摘要:
线性结构 队列 使用场景:银行排队 队列介绍 队列是一个有序列表,可以使用数组或者链表来实现 遵循先入先出原则 队列的实现方式 数组模拟队列 队列本身是有序列表,若用数组实现,则假设最大值为maxSize 分别设置 rear 与 front 记录队列的 尾部与头部 front(头)随着数据输出而变化 阅读全文
posted @ 2020-04-24 16:52
LEI_Z
阅读(182)
评论(0)
推荐(0)
摘要:
线性结构 稀疏数组 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保持该数组。 稀疏数组的处理方法是 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 首行保存原始数组共有几行几列几个值 二维数组转稀 阅读全文
posted @ 2020-04-24 16:51
LEI_Z
阅读(157)
评论(0)
推荐(0)
摘要:
数据结构与算法 数据结构与算法的重要性 算法是程序的灵魂,优秀的程序员可以在海量数据计算时,依然保持高速计算 一般来讲,程序会使用内存计算框架(Spark)和缓存技术(比如Redis)来优化程序,核心部分是算法 公司要求高、高薪 数据结构与算法的关系 数据结构是一门研究组织数据方式的学科,有了变成语 阅读全文
posted @ 2020-04-24 16:50
LEI_Z
阅读(153)
评论(0)
推荐(0)
摘要:
Linux教程 Linux的应用领域 个人桌面领域 此领域是Linux应用最薄弱的环节,但是催着Deepin等,桌面占有率有所回升 服务器领域 此领域是服务器的应用是最强的,Linux免费、稳定、高效等特点在这里得到了很好的体现 嵌入式领域 Linux运行稳定、对网络良好支持性、低成本,内核最小可以 阅读全文
posted @ 2020-04-24 16:48
LEI_Z
阅读(239)
评论(0)
推荐(0)
摘要:
MybatisPlus概述 MybatisPlus可以节省我们大量的工作时间,所有的CRUD都可以完成,类似的还有 JPA、tk mapper 特性 无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小 :启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大 阅读全文
posted @ 2020-04-24 16:45
LEI_Z
阅读(415)
评论(0)
推荐(0)
摘要:
SpringBoot 一、SpringBoot介绍 1.1 引入 Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 基于POJO的轻量级和最小侵入性编程,所有东西都是bean 通过IOC,依赖注入(DI)和面向接口实现松耦合 基于切面(AOP)和惯例进行声明式编程 通过切面和模版减少 阅读全文
posted @ 2020-04-24 16:43
LEI_Z
阅读(146)
评论(0)
推荐(0)
摘要:
原作者Github:https://github.com/GenshenWang/SSM_HRMS 配置文件 db.properties Log4j.properties MybatisConfig.xml springmvc.xml applicationContext.xml web.xml E 阅读全文
posted @ 2020-04-24 16:35
LEI_Z
阅读(840)
评论(0)
推荐(0)
摘要:
SpringMVC SSM:Mybatis + Spring + SpringMVC 一、MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法来组织代码 MVC主要作用是降低了 视图与业务逻辑间的双向耦合 阅读全文
posted @ 2020-04-24 16:32
LEI_Z
阅读(180)
评论(0)
推荐(0)
摘要:
Spring 一、Spring简介 1.1 简介 Spring:春天 2002年,首次推出了Spring框架的雏形:interface21框架 Spring框架以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版本 Rod Johnson , 阅读全文
posted @ 2020-04-24 16:28
LEI_Z
阅读(91)
评论(0)
推荐(0)
摘要:
Mybatis 一、简介 1.1 什么是Mybatis MyBatis 是一款优秀的 持久层 框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 J 阅读全文
posted @ 2020-04-24 16:26
LEI_Z
阅读(135)
评论(0)
推荐(0)
摘要:
JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 ,易于阅读和编写,也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,许多语言都提供了对JSON的支持,因此JSON是一种优秀的数据交换(客户端与服务端之间)语言。 一、JSON在Java 阅读全文
posted @ 2020-04-24 16:24
LEI_Z
阅读(244)
评论(0)
推荐(0)
摘要:
JavaWeb 一、基本概念 1.1 基本介绍 web开发: web 网页 静态web html,css 提供给所有人看,始终不会发生变化 动态web 淘宝 根据不同的人展示不同的效果 技术栈:Servlet/JSP、APS、PHP(最好语言 = =、) Java中,动态web资源开发的技术统称为J 阅读全文
posted @ 2020-04-24 16:22
LEI_Z
阅读(301)
评论(0)
推荐(0)



浙公网安备 33010602011771号