02 2019 档案
摘要:HashMap 源码分析是面试中常考的一项,下面一篇文章讲得很好,特地转载过来。 本文转自:https://www.cnblogs.com/chengxiao/p/6059914.html 参考博客:https://liuyanzhao.com/7656.html 哈希表(hash table)也叫
阅读全文
摘要:1、 OSI,TCP/IP,五层协议的体系结构,以及各层协议 答: OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。 每一层的协议
阅读全文
摘要:1、请问下面关于与wait()一起使用的方法notify()的各种陈述,哪个正确? A 多个线程同时等待某个条件,则只有等待时间最长的哪个线程被通知 B 多个线程同时等待某条件,则没有办法预测哪个线程被通知 C notify()方法,在任何方法中都能调用 D notify()方法只能从while循环
阅读全文
摘要:上面是官方文档的简介,下面我们根据官方文档总结一下: wait( ),notify( ),notifyAll( )都不属于Thread类,而是属于Object基础类,也就是每个对象都有wait( ),notify( ),notifyAll( ) 的功能,因为每个对象都有锁,锁是每个对象的基础,当然操
阅读全文
摘要:作为大三寒假的最后一周,也是开学前的最后一个周六,总结下本假期以来的学习进度和下阶段的学习目标。 寒假的学习,前半段忙于对招就处项目的编写,过年回来,开始对算法进行复习。主要致力于递归算法和排序算法。对蓝桥学院算法视频的学习和总结。但是越学习越发现现阶段算法及算法思维养成的重要性。准备蓝桥杯省赛,毕
阅读全文
摘要:题5:设计一个高效的求a的n次幂的算法 算法分析: 1、可以用for循环实现 a*a*a*a*... 2、可以用递归实现 res*pow1(a,n-ex)
阅读全文
摘要:题3:在有空字符串的有序字符串数组中查找 算法思路: 字符串比较方法compareTo()。按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字
阅读全文
摘要:题2:旋转数组的最小数字(改造二分法) 算法思路,先二分查找,最小的数应该在无序的那边。
阅读全文
摘要:题1:小白爬楼梯(递归设计) 算法分析:f(n) = f(n-1) + f(n-2) + f(n-3)
阅读全文
摘要:评估递归算法的复杂度: 希尔排序性能分析: 排序算法稳定性: 10种排序算法的复杂度及稳定性表格:
阅读全文
摘要:一、算法原理 基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(low指向起始位置,high指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换low和high位
阅读全文
摘要:冒泡、插入、选择排序的时间复杂度为O(n2) Arrays.sort()时间复杂度为nlgn 具体算法实现代码: 控制台输出:
阅读全文
摘要:Java工具包中的Arrays工具类里面有数组的快速排序算法。 源码如下: java.util.Arrays类能方便的操作数组,它所有的方法都是静态的。 1.filll方法 :给数组中的某段元素附上相同值。 2.sort方法:对数组中某段元素排序。 3.equals方法:比较两个数组,判断的是数组中
阅读全文
摘要:一、算法原理 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据,将它与arrr[0]交换;第2趟,在待排序数据arr[2]~arr[n-1]中选出最小的数据,将它与r[1]交换;以此类推,第i趟在待排序数据
阅读全文
摘要:一、算法原理 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤
阅读全文
摘要:顺序查找O(n) 二分查找O(lgn) 通过代码来感受性能差别 运行结果:
阅读全文
摘要:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一种更高效的版本,也成为缩小增量排序。 一、算法原理 现在有一个array,希尔排序就是设定一个增量incrementNum(0<incrementNum<array.length)。 先从array[0]开始,以incrementNum为增量
阅读全文
摘要:二分查找是一种查询效率非常高的查找算法。又称折半查找。 一、算法思想 有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。 一个情景:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,
阅读全文
摘要:如何正确的求2个数的平均值。在练习算法二分查找的时候发现的,以前没有注意到的bug 备注:数据以int类型为例 一、以前的通用写法 请记住:这是一个有bug的写法,因为两个数相加有可能超过了int的范围,但是他们的平均值肯定不会超过范围。以前没有注意到这个问题,知道深入了解了位运算。 二、正确写法
阅读全文
摘要:汉诺塔题目要求: 解题思路: 1~N从A移动到B,C作为辅助 等价于: 1、1~N-1从A移动到C,B作为辅助 2、把N从A移动到B 3、1~N-1从C移动到B,A为辅助 算法实现:
阅读全文
摘要:递归基础练习题 代码实现及测试用例 递归基础总结见博客:https://www.cnblogs.com/zsh-blogs/p/10385856.html
阅读全文
摘要:插入排序是简单排序中最快的排序算法,虽然时间复杂度仍然为O(n*n),但是却比冒泡排序和选择排序快很多。 一、原理 1、将指针指向某个元素,假设该元素左侧的元素全部有序,将该元素抽取出来,然后按照从右往左的顺序分别与其左边的元素比较,遇到比其大的元素便将元素右移,直到找到比该元素小的元素或者找到最左
阅读全文
摘要:找重复 1、找到一种划分方法。 2、找到递推公式或者等价转换。 都是父问题转化为求解子问题。 找变化的量 变换的量通常作为参数 找出口 终止的条件
阅读全文
摘要:一、加法 a+b 举例实现:13+9=22 13+9不考虑进位结果为12 只考虑进位结果为10 和刚好是22。 13二进制为1101,9二进制为1001。 不考虑进位结果为0100。算式为a^b 只考虑进位结果为10010。算式为(a&b)<< 1 然后它俩继续进行运算,直到进位为0。 算法实现:
阅读全文
摘要:解题思路: 2个相同的2进制数做不进位加法,结果为0 10相同的10进制数做不进位加法,结果为0 K个相同的K进制数做不进位加法,结果为0 任意进制互换方法: 1、手工取余法 2、Integer.toString(i,radix)
阅读全文
摘要:1 package bitOperation; 2 3 import java.util.Scanner; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-02-14 16:18 9 * @Describe 题5:将整数的奇偶位交换 10 */ 11 public class Main5 {...
阅读全文
摘要:1 package bitOperation; 2 3 import java.util.Scanner; 4 5 /** 6 * @author zsh 7 * @company wlgzs 8 * @create 2019-02-14 15:54 9 * @Describe 题4:是不是2的整数次方 10 * 用一条语句判断一个整数是不是2的整数次方 11 ...
阅读全文
摘要:共有三种解法: 1、将1左移i位后与N进行&,只有都为1时,结果才为1。 2、n无符号右移与1&,结果为1说明当前位为1。 3、(x-1)&x 可以消掉最低位上的1.消掉几次,1的个数就为几。 补充知识: << ,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。9 << 1 = 18;
阅读全文
摘要:两种方式实现: 知识补充:与:都为1结果为1 & ;或:有一个为1结果为1 | ;异或:二者不同时结果为1 ^ 异或可以理解为不进位加法。1+1 = 0, 0 + 0 = 0,1 + 0 = 1。 判断奇偶数 x&1 == 1 奇数; x&1 == 0 偶数。
阅读全文
摘要:1.在软件开发过程中,我们可以采用不同的过程模型,下列有关 增量模型描述正确的是() A 是一种线性开发模型,具有不可回溯性 A 是一种线性开发模型,具有不可回溯性 B 把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件 C 适用于已有产品或产品原型
阅读全文
摘要:今天是过完春节返校学习的第一天,本来准备刷视频去学习做仿抖音的微信小程序,但是发现不会的太多,下手难度大,遂准备延期。今天找到了蓝桥杯的2019算法视频,关于算法之美和数据结构的。准备花几周的时间去学习,毕竟省赛将近了。准备的还不充分,过年回家基本没有学习,学习进度有落下。 关于学习方法,今天我看到
阅读全文
摘要:手写Api文档的几个痛点: Swagger也就是为了解决这个问题,当然也不能说Swagger就一定是完美的,当然也有缺点,最明显的就是代码移入性比较强。 其他的不多说,想要了解Swagger的,可以去Swagger官网,可以直接使用Swagger editor编写接口文档,当然我们这里讲解的是Spr
阅读全文