算法
Hunaiyo
本人为广工一苦逼呈虚猿。
展开
-
冒泡排序
基本思想:比较相邻两个元素的关键字值,如果反序,则交换。若按升序排序,每一趟将被扫描的数据序列中的最大元素交换到最后位置,就像气泡从水里冒出一样。 代码实现: public class BubbleSort{ public static int[] random(int n){ if(n>0){ int table[] =new int[n]; for(int i=0;i table原创 2015-03-19 07:54:13 · 472 阅读 · 0 评论 -
观察者模式
观察者模式:在对象之间定义一对多的依赖,当一个对象的改变状态,依赖它的对象会收到通知,并自动更新。 当你想要做一个响应时间之间的关联时,即一个事件的响应引起另一事件的响应。我们所用的监听器大概是这个原理。。。 我们看下面的例子: 首先,我们先创建一个观察者的接口,让所有的观察者都实现这个接口,同时提供一个update方法让观察者更新数据。 //代码如下 public interface原创 2015-03-19 21:33:09 · 400 阅读 · 0 评论 -
希尔排序
希尔排序: 1、将数据序列分为若干组,每组由若干相隔一段距离的元素组成,这段距离称为增量组内采用直接插入排序。 2、增量的初始值一般为数据序列长度的一般,以后每趟增量逐渐缩小,最后值为1原创 2015-03-13 00:05:18 · 444 阅读 · 0 评论 -
基于JDK的RSA算法实现数字签名
数字签名借助RSA算法实现,由于RSA算法的特点是非对称类算法,同时将破解的风险转移到数学难题(分解公因数)上,使其难以破解。由于算法有公钥和私钥,私钥就是私有的,仅自己能够知道,公钥就是公开给别人的。那如果我用我的私钥加密然后你用我的公钥解密,这就能唯一确定这个东西我是发给你的。 这是基于jdk的数字签名, 代码如下: import java.security.KeyFac原创 2015-03-08 19:36:22 · 1474 阅读 · 0 评论 -
利用递归求Fibonacci序列
递归定义:用一个概念本身直接或间接定义它自己,即自身调用自身。 满足条件:1、至少有一条出事定义是非递归的,如1!=1,作为终止条件返回。 2、由一直函数值逐步地推计算出未知函数值,如用(n-1)!定义n! 例子: public class Fibonacci{ public static int fib(int n){ if(n==0||n==1原创 2015-03-10 10:44:51 · 753 阅读 · 0 评论 -
直接插入排序
直接插入算法的描述:将第i个元素插入到前i个元素构成的序列前,然后通过比较大小移动i得到适当位置。 本人的模拟代码如下: public class InsertSort { public static int[] random(int n){ if(n>0){ int table[] =new int[n]; for(int i=0;i table[i]=(int) (Math.ra原创 2015-03-12 20:19:27 · 471 阅读 · 0 评论 -
快速排序
基本思想:在一个序列中选择一个值作为比较的基准值,每趟从数据序列的两端开始交替进行,将小于基准值的元素交换到序列前端,将大于基准值元素交换到序列后端,介于两者之间的位置则成为基准值的最终位置。 算法实现: public class QuickSort{ public static int[] random(int n){ if(n>0){ int table[] =new int原创 2015-03-19 08:46:46 · 695 阅读 · 0 评论 -
实现自己的HashMap
看了HashMap源码,HashMap的结构采用的是数组+链表--Hash表,结合了数组寻找、存取和链表的易插入删除等优点。 HashMap的存取实现 既然是线性数组,为什么能随机存取?这里HashMap用了一个小算法,大致是这样实现: //存储时: int hash = key.hashCode();// 这个hashCode方法这里不详述,只要理解每个key的h原创 2015-05-04 20:18:24 · 730 阅读 · 1 评论