- 博客(15)
- 问答 (1)
- 收藏
- 关注
原创 数据结构与算法学习笔记(十一)希尔排序
希尔排序希尔排序(Shell Sort)又称为缩小增量排序(Diminishing Increment Sort),也称为n间距(n-gap)插入排序。该算法是一个泛化的插入排序,也是突破时间复杂度O(n^2)的第一批算法之一。插入排序的苛刻要求– 在原数据序列本身就基本有序时,插入排序的效率很高,可快速排序;– 原数据序列记录较少时,直接插入排序也比较有优势;而现实中这样的要求都属于特殊情况,所以希尔排序实现了对直接插入排序的优化。设计思想的不同– 插入排序中的比较是在两个相邻元素之间进行
2021-08-11 17:23:12
168
原创 数据结构与算法学习笔记(十)插入排序
插入排序插入排序(Insertion Sorting)属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。插入排序的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。插入排序过程演示代码实现package com.atCodeSun.sort08;
2021-08-11 08:45:51
190
原创 数据结构与算法学习笔记(九)选择排序
选择排序法选择排序(Selection Sort)是一种原地排序算法(不需要额外的存储空间)。选择排序的每一轮排序都会从待排序列中找到一个最大值(或最小值),而第一轮会将最大值(或最小值)的存放位置交换到序列的起始位置,后续的次大值(或次小值)则会存放到已排序的序列的末尾。图解选择排序过程选择排序的实现过程(1)N个数字要排序完成,总共进行N-1轮排序;(2)每一轮排序,又是一个循环;(2-1)先假定当前这个数是最小数(2-2)然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新
2021-08-10 10:33:57
221
原创 数据结构与算法学习笔记(八)冒泡排序
0x01 冒泡排序冒泡排序(Bubble Sort)是一种交换排序。其基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。冒泡排序的优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。图解冒泡排序过程...
2021-08-10 08:54:02
185
原创 数据结构与算法学习笔记(七)排序算法预备知识介绍
0x01 排序排序也成为排序算法(Sort Algorithm),排序是将一组数据,按照指定的顺序进行排列的过程。0x02 排序的分类内部排序指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类0x03 算法的时间复杂度度量一个程序(算法)执行时间的两种方法– 事后统计的方法:需要实际运行该程序;所得的时间的统计量依赖于计算机的硬件、软件等环境因素。– 事前估算的方法:通过分
2021-08-09 19:51:42
154
原创 数据结构与算法学习笔记(六)栈的快速入门及使用栈实现逆波兰表达式求解
0x01 栈定义:栈(stack)是一个有序线性表,只能在表的一端(称为栈顶,top)执行插入和删除操作。最后插入的元素将第一个被删除。所以,栈也称为后进先出(Last In First Out,LIFO)或先进后出(First In Last Out,FILO)线性表。栈的局限性就是栈的最大空间必须先声明且不能改变。两个专有操作:– 入栈 (push):表示在栈中插入一个元素;– 出栈 (pop):表示从栈中删除一个元素;试图对一个空栈执行出栈操作称为下溢(underflow);试图对一个满栈
2021-08-08 22:32:51
252
原创 数据结构与算法学习笔记(五)约瑟夫问题实现
0x01 约瑟夫问题约瑟夫问题(丢手帕问题) Josephu问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到m的那个人出列,它的下一位又从 1 开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。0x02 实现思路 用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开始计数,计到 m 时,对应结点从链表中删除,然
2021-08-07 16:30:09
103
原创 数据结构与算法学习笔记(四)双向链表
0x01 定义 双向链表:也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。0x02 双向链表的优缺点优点– 对于链表中给定的一个结点,可以从两个方向进行操作;缺点– 每个结点需要再添加一个额外的指针,需要更多的空间开销;– 节点的插入或删除更加费时(花更多的时间调整指针)。0x03 双向链表的常用操作代码实现遍历添加修改删除package com.atCodeSun.doubleLinkedList04;/** * @autho
2021-07-27 20:16:25
95
原创 数据结构与算法学习笔记(三)单向链表
一. 几个概念0x01 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。链表是以结点的方式存储的,是链式存储。结点可以在运行时动态生成。链表是有序的列表,但其在内存中的存储是非连续、非顺序的。0x02 结点 在链表数据结构中,我们把一个数据元素的存储映像称为结点(Node)。而一个结点包含存储数据元素的两部分信息:数据域(Data)和指针域(Next)。0x03 数据域、指针域数据域:存储数据元素信息的域;指针域:存储直接后继位置
2021-07-27 09:50:56
1739
原创 数据结构与算法学习笔记(二)数组模拟队列、环形队列
一. 队列1.1 定义 队列(Queue)和堆栈都是有序列表,也属于抽象型数据类型(Abstract Data Type,ADT)。队列是一种先进先出(First In First Out,FIFO)的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。队列使用front和rear两个指针分别指向队列的前端和末尾。1.2 队列的基本操作特性① 先进先出;② 两种基本操作:加入与删除,而且使用front和rear两个指针分别指向队列的前端和末尾。基本运算① Create:创建空队列;
2021-07-26 10:06:00
158
原创 数据结构与算法学习笔记(一)稀疏数组的压缩与还原
一. 定义 在矩阵(二维数组)中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵(二维数组)为稀疏矩阵(稀疏数组);与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。二. 分析问题 对于稀疏数组而言,实际存储的有效数据项很少,在计算机中使用传统的二维数组方式存储稀疏数组,就会十分浪费计算机的内存空间。所以应该采取三项式(3-tuple)的数据结构对稀疏数组进行压缩存储,提高内存空间利用率。把每一个非零项以(row,col,item−value)(row,
2021-07-25 21:18:38
510
原创 Java项目管理工具Maven——(二)使用IDEA2020.2.3创建Maven的Java工程和Web工程
0x01.前言0x02.使用模板创建Maven的Java工程####1.创建一个新工程File—>New---->Project0x03.不使用模板创建Maven的Java工程0x04.使用模板创建Maven的Web工程
2021-07-17 16:41:45
566
原创 Java项目管理工具Maven——(一)下载安装和IDEA集成Maven插件
0x01.前言百度百科上一段简介:Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者
2021-07-14 17:11:40
316
原创 IDEA2020.2.3创建一个web项目步骤
一. 下载并安装Tomcat1.Tomcat有解压缩版和exe安装版,我采用的是解压缩版。可去[官网下载](https://tomcat.apache.org/download-80.cgi)
2021-07-11 23:06:07
1828
1
原创 压缩版Tomcat访问出错解决
压缩版apache-tomcat-8.5.69浏览器网页访问出错解决问题一下载压缩版apache-tomcat-8.5.69并解压,在浏览器中访问http://localhost:8080或http://127.0.0.1:8080或localhost:8080(高级浏览器可省略前面内容,会默认补齐),没能成功访问Tomcat自带的root项目页面。出现的错误提示信息:java.lang.IllegalStateException: No output folder错误原因:apache-tom
2021-07-10 22:28:07
287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人