[ 算法 ] -- 堆排序,Java实现 堆的基本概念:堆是一棵所有元素按完全二叉树的顺序存储方式存储的完全二叉树。堆的性质: --堆中某个节点的值总不大于或不小于其父节点的值; --堆总是一棵完全二叉树。小根堆:每个节点的值小于等于左、右孩子的值(根节点最小的堆)大根堆:每个节点的值大于等于左、右孩子的值(根节点最大的堆)父节点 n ==&g...
maven管理工具连接MySQL时报出错误:不建议在没有服务器身份验证的情况下建立SSL连接 连接数据库出现的警告:Sat Aug 10 22:26:00 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL...
IDEA中安装 Lombok 插件及遇到的问题 Lombok的简介:lombok是一个通过注解以达到减少代码的Java插件,用于帮助开发人员消除Java代码的冗长(尤其对于简单的Java对象),减少get()、set()、构造方法等的编写。Lombok的安装:1. 打开IDEA,选择插件:File --> Setting --> Plugins2. 选择Browse repositories,双击3. 搜...
[ 算法 ] -- 归并排序,Java实现 归并排序基本思想:归并排序是建立在归并操作上的一种有效的排序算法,采用“分治”思想。归并排序将已经有序的子序列合并成一个序列,得到的序列完全有序;二路归并:将两个有序表合成一个有序表归并排序的特点:时间复杂度:O(n*logn)空间复杂度:O(n)稳定性:稳定归并排序的步骤:1. 分解:将待排序的序列平均分解成两个元素个数相同的子序列;2. 合并:合并两个有序...
[ 算法 ] -- 快速排序(递归、非递归、优化),Java实现 快速排序思想:快速排序使用“分而治之”的思想,在待排序的元素中选取某一元素作为基准值,通过一趟快速排序将待排序序列分割成两部分,基准值左边部分的所有元素均小于基准值,右边部分的所有元素均大于基准值,之后分别对这两部分重复上述过程,直到所有元素排在相应位置,即完成本次快速排序。时间复杂度:平均:O(n*logn);最坏:O(n^2)空间复杂度:O(log n),最坏:O(n)-->...
[ 算法 ] -- 选择排序,Java实现 选择排序:每次从待排序的数据元素中选出最小(或最大)的元素,存放在起始位置,直到全部待排序的数据全部排完。实现思路1:每一趟排序,j = i + 1;当arr[j]<arr[i],交换,否则不交换实现思路2:先选出待排序数据中的最小元素,再进行交换时间复杂度:O(n^2)空间复杂度:O(1)选择排序是不稳定的排序思路1代码实现:import java...
[ 算法 ] -- 希尔排序,Java实现 希尔排序:希尔排序又称为缩小增量法,是对直接插入排序算法的最坏情况的优化。实现过程:先将数据分成不同的组,对每一组进行排序,然后再对所有元素进行一次插入排序,减少数据交换和移动的次数。在进行希尔排序时,要先知道数组的长度,根据长度确定步长大小。当步长为1时,采用直接插入排序。具体实现由下图所示:时间复杂度:希尔排序的时间复杂度与增量(步长len)的选取有关。...
[ 算法 ]-- 直接插入排序,Java实现 直接插入排序:在一个已经有序的序列中插入一个新的数,使得插入之后的序列依然有序。插入排序的基本思想是将一个数插入到已经有序的序列中,得到一个新的、个数加一并且依然有序的序列。基本实现思路:对于给定的元素个数为n的数组,已知只有一个元素的数组一定有序,即将第一个元素自动看成一个有序数组,其余的元素为无序;从第二个元素开始到第n个元素,依次向有序序列中执行直接插入操作,得到有n个元素的...
编程题--链表分割 题目描述:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割后保持原来的数据顺序不变解题思路:import java.util.*;/*public class ListNode { int val; List...
Linux下升级gcc版本(9.1.0版本) 1. 普通用户中下载gcc的最新源码包:wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz2. 解压安装包tar -xzvf gcc-9.1.0.tar.gz3. 进入目录gcc-9.1.0cd gcc-9.1.04.运行download_prerequisites脚本./contrib...
编程题--最后一词 题目描述:给定一个可能由任意数量的字母和空格组成的字符串序列,序列中每个只包含字母,不包含任何空格的子序列称为一个单词。请输出一个序列中最后一个单词的长度。输入描述:一个有字母和空格组成的字符串输出描述:字符串中最后一个单词的长度示例1:输入:carpe diem输出:4解题思路:1. 将输入的字符串序列转换为字符数组;2. 遍历数组,查找字...
软件测试--测试分类 按开发阶段分:分为单元测试、集成测试、系统测试(包含回归测试、冒烟测试)、验证测试测试金字塔与业务测试分析:单元测试:对软件组成单元进行测试又称为模块测试测试目的:检验软件基本组成单位的正确性测试阶段:编码前或者编码后(TDD)测试对象:软件设计的最小单位--模块测试人员:白盒测试工程师或开发工程师测试依据:代码和注释+详细设计文档测试方法:白盒...
软件测试--测试用例的相关概念及设计方法 相关概念:测试用例的概念:测试用例时为了实施测试而向被测试的系统提供的一组集合,其中包括:测试环境、操作步骤、测试数据、预期结果等好的测试用例是一个不熟悉业务的人也能依据用例来很快地进行测试;测试:向被测试的程序输入的一组集合;测试用例解决的问题:1. 不知道是否较全面地测试了所有功能;2. 测试的覆盖无法衡量;3. 对新版本的重复测试很难实施;4. 存在大量冗...
软件测试--缺陷 软件测试的生命周期:需求分析 --> 测试计划 --> 测试设计、测试开发 --> 测试执行 --> 测试评估软件测试&软件开发生命周期:1. 需求阶段:测试人员了解需求、对需求进行分解,得出测试需求;2. 计划阶段:根据需求编写测试计划、测试方案;3. 设计阶段:包括概要设计和详细设计,测试人员适当的了解设计,对于设计测试用例很有帮助,测试人员...
软件测试--软件测试模型:V模型和W模型 软件测试 V模型:测试流程: V模型测试流程:需求分析--概要设计--详细设计--软件编码--单元测试--集成测试--系统测试--验收测试V模型最早有Paul Rook在20世纪80年代后期提出的,目的是改进软件开发的效率和效果,是瀑布模型的变种。软件测试V模型指出:单元和集成测试应检...
软件测试--软件测试的五种开发模型 软件工作的范围不仅局限在程序编写,而且扩展到了软件的整个生命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安全部署、运行维护,指导软件被更新和替换新的版本。软件工程还包括过程管理、产品管理、资源管理和质量管理等技术性的管理工作。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用于作为软件工作的基础。软件的生命周期指从软件产品的设想开始到软件不再使用...
编程题--求1+2+3+...+n的和,不能用for、while、if等 题目描述: 求1+2+3+...+n的和,要求不能使用乘除法、for、while、if、else、switch、case等关键字 及条件判断语句(A?B:C)。解题思路: 可以使用短路算法&&,当"n = 0"时发生短路。代码实现:public class Solution { public int Sum_Solution(...
编程题--左右最值最大差 题目:给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6分析:本题的要求是“数组左边部...
Java--方法重载与方法覆写(方法重写)的区别 方法重载(Overload):https://mp.csdn.net/postedit/88760397方法覆写(Override): https://mp.csdn.net/postedit/902419381.概念不同重载:方法名相同,参数的列表或返回值不同,与返回类型无关 覆写:方法的名称、返回值类型、参数类型及个数完全相同2.关系不同重载:同一个类中方法之间的关系,是水...
Java--覆写 概念:子类定义与父类相同的方法或属性时,该操作称为覆写1.方法的覆写(研究抽象类和接口的第一步)概念:子类定义了与父类方法名称、参数类型及个数完全相同的方法注意:子类被覆写时不能够拥有比父类更为严格的访问控制权限 你当前使用的对象是通过哪个类new的 当调用某个方法时,如果该方法已经被子类所覆写,那么调用的一定是被覆写过的方法举例:class People...