
算法
文章平均质量分 68
英俊帅比林
我真好看
展开
-
八大排序——快速排序(java实现)
快速排序是一种比较“中庸”的排序方法,它在最好和最坏的情况下的时间复杂度都比较可观。因此,当我们遇到一串数据,不知道用那种排序方法比较合适的时候,可以先用快速排序解决一下问题。甚至,在学会快速排序的算法和代码之后,我们可以把代码背下来,以备不时之需。下面我们正式开始学习这种排序方法。算法原理解析在一串有序的数列中,我们总能找到一个处于中间或类似中间位置的数,在这个数一边的数比它大,另一边的数...原创 2018-10-14 09:56:10 · 1312 阅读 · 0 评论 -
算法:两个链表以逆序组成数字相加
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2018-12-30 17:02:36 · 937 阅读 · 0 评论 -
迪菲-赫尔曼密钥交换
在上一篇对称加密,非对称加密的博客中,我们提到了使用对称加密的时候加密解密的钥匙容易被他人窃取的安全性问题,为了解决这种问题,我们要不使用非对称加密,要不就要使用混合加密方式。除此之外,我们现在要介绍的另一种方法是使用迪菲-赫尔曼加密方法。迪菲-赫尔曼密钥迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对...原创 2018-12-24 19:48:56 · 2075 阅读 · 1 评论 -
混合加密
前言上一篇文章我们提到了公开密钥加密方法并且剖析了它的优点和缺点,优点主要是加密解密比较安全,在攻击人没有拿到私钥的情况下,使用此种加密解密方式几乎不可能被破解;缺点有两个,第一个是使用此种方式的性能比较不好,第二个是在公钥的交付过程中可能会被攻击人拦截到并且替换成自己的公钥,让甲方和乙方在自以为很安全的情况下就泄露了自己的信息。此篇博文我们先来解决一下第一个问题。混合加密当我们使用对称加...原创 2018-12-24 10:50:18 · 3144 阅读 · 0 评论 -
Java使用Arrays.sort()方法给对象排序
当我们给一个整型数组或者浮点型之类的数组排序的时候,很简单就可以达到我们排序的目的,无非是排序算法的问题。那么,如果我们现在想根据对象的一个属性值给一个对象数组进行排序呢?假如我们现在有一个Car类型,Car类中有一个double型的speed属性用来描述车辆的速度,现在我们想根据车速来对一个Car数组中的车辆进行排序,怎么做呢?public class Car{ private doubl...原创 2018-12-10 17:52:06 · 26404 阅读 · 4 评论 -
jvm垃圾收集机制详解(中)
上一篇传送门:jvm垃圾收集机制详解(一)三、垃圾收集算法(仅算法思想)1.标记清除算法标记清除算法是另外两种垃圾回收算法的基础,之所以说是基础是因为这种算法仅仅是简简单单地把标记了需要清除的对象进行了回收而已,除此之外没有任何其它操作。这种算法有很多不足,例如标记和清除的效率不高,清楚之后明明空闲内存的总和足够,但是就是无法容纳下大对象从而必须提前触发下一次垃圾回收或者干脆就报内存溢出异常...原创 2018-12-07 17:30:13 · 286 阅读 · 0 评论 -
java实现将两个有序链表合成一个新的有序链表
链表节点结构及方法:public class Node { private Node next; private Integer number; Node(){} Node(Integer number) { this.number=number; next=null; } public Node getNext() { return next; } public...原创 2018-11-17 09:56:45 · 706 阅读 · 0 评论 -
java实现平衡二叉排序树增删
在学习了普通二叉排序树的算法之后,我们发现了它的一些不足,如果我们的普通二叉树在插入数据的时候造成树的一侧数据过多的话,就会使得查找的时候效率大大降低,在极端情况下,我们插入一串有序的数,原本的二叉树就会变成链表,例如,插入:1,2,3,4,5,6,结果就会变成下图这样:这样就违背了我们二叉树的初衷,相当于有一边的孩子节点失去了意义,这种二叉树就是不平衡的二叉树。那么具体什么样的二叉树是不平...原创 2018-11-11 14:50:45 · 718 阅读 · 0 评论 -
八大排序——冒泡排序(java实现)
冒泡排序是一种思想简单,便于理解和实现的排序算法,也许是很多人学习的第一个排序算法,废话不多说,我们来实现它算法详解我们以升序排列为例,算法的思想是,遍历整个数组,依次对数组中的每两个数进行比较大小,通过两个数字的交换,达到将最大的元素移动到数组的最后的目的,然后再次进行遍历,将第二大的数字移动到数组的倒数第二个位置…这样一次次遍历下来,数组将变为有序。举例如下,假设有一串数,以降序排列,现在...原创 2018-10-10 15:50:11 · 979 阅读 · 0 评论 -
众数抽奖算法
需求描述在各大电商购物平台上,常常会举行抽奖活动,假设我们的每个用户有一串唯一的ID,由一串数字组成,长度固定,我们的抽奖是从所有用户ID的每一位取众数,然后拼接成一个中奖的ID算法我们可以将每一个...原创 2018-10-14 10:50:46 · 259 阅读 · 0 评论 -
页面置换算法(OPT,FIFO,LRU)
页面置换算法地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。下面以页面访问顺序:4,3,2,1,4,3,5,4,3,2,1,5,实际页面数为3为例,研究三种算法的不同最佳置换算法(OPT)理想置换算...原创 2019-01-05 16:24:39 · 20050 阅读 · 5 评论