`
jimmee
  • 浏览: 539920 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
1、反转一个链表。循环算法。               1     List   reverse(List   l)   {       2     if(!l)   return   l;       3         list   cur   =   l.next;       4     list   pre   =   l;       5     list   tmp;       6     pre.next   =   null;       7     while   (   cur   )   {       8         tmp   =   cu ...
const unsinged short uni_table[]= {     0x4E00, /* GB2312 Code: 0xD2BB ==>一 Row:50 Col:27 */     0x4E01, /* GB2312 Code: 0xB6A1 ==>丁 Row:22 Col:01 */     0x4E03, /* GB2312 Code: 0xC6DF ==>七 Row:38 Col:63 */     0x4E07, /* GB2312 Code: 0xCDF2 ==>万 Row:45 Col:82 */     0x4E08, /* GB2312 Cod ...
In this chapter we introduce a simple specialized machine called a linear feedback shift register (LFSR). We describe how it works, discover interesting applications, and study its limitations. Later, in the book, we will repeat the same process with a general-purpose computer. One-time pad. As moti ...
Abstract: This application note gives a function for random number generation using the MAX7651/52 microcontroller with 12-bit analog-to-digital converter (ADC). Applications such as spread-spectrum communications, security, encryption and modems require the generation of random numbers. The most co ...
public class Primes { public static void main(String[] args) { int N = 25; boolean[] a = new boolean[N]; // 先标记所有的数都是素数 for (int i = 2; i < N; i++) a[i] = true; for (int i = 2; i < Math.sqrt(N); i++) { if (a[i] != false) { // i没有被前面的步骤消去,i的i,i+1 ...
   我在文章http://jimmee.iteye.com/blog/510265里已经说过如何自己实现队列Queue和堆栈Stack。不管是是队列还是堆栈,都可以采用数组或者链表的方式来是实现。    1.Java集合框架里存在Queue这个接口,之后有不同类型的队列的实现。有Stack这个类实现堆栈,其实这个类是通过继承Vector的方式来实现的,Vector和ArrayList的实现方式差不多,只不过Vector里的方法是线程安全的。其实我觉得Java框架里的Stack的实现方式个人认为并不是太好,与Vector之间采用Has-a的实现更好,而不是采用Is-a的方式。    2.对Lin ...
Java自带的LinkedList的实现的方式,可以说是最高效的。 可以分析一下其他的实现方式: 1.如果我们用只有一个头指针的单链表的方式实现LinkedList,那么在链表的末尾进行的操作效率就不是很高,例如,我们在链表的末尾的增加一个元素的操作,或者删除一个元素的操作,时间负责度都为O(n)。那么如果增加一个尾指针呢,是不是就可以实现效率高的操作了? public boolean addLast(Object element){       Entry temp=new Entry();       temp.element=element;       temp.next=null;   ...
LinkedList的实现其实是一个带哑头节点的双向循环链表。 1.LinkedList的字段 private transient Entry<E> header = new Entry<E>(null, null, null); //Entry是一个LinkedList的内部类,其实就是链表上的节点,包含两个指针,一个指向 //前面节点,一个指向后面节点    private static class Entry<E> { E element; Entry<E> next; Entry<E> previous; Ent ...
ArrayList可以看作是对一个数组的包装,实现可变数组。 1.ArrayList的基本字段 //保存真正元素的数组,这里可能大家会感到奇怪,为什么把这数组标记为transient,这 //样序列化时不能序列化这个数组了。所以之后就只能才能手动序列化保存ArrayList里 //的元素值了。虽说数组里保存的都是对象的引用,序列化的时候,也会把真正的对象序 //列化保存起来的。但是如果是直接不用transient修饰这个数组,那么序列化时,那些 //elementData中为null的空间也会序列化。一句话:我们序列化时,是序 //列化ArrayList里的真正的元素,而不是elementDa ...
1.     List接口扩充了Collection接口,添加了一些和索引相关的方法。例如,List接口有一个get方法,返回指定索引值的元素。在任何List对象中,也就是说,在任何实现List接口的类的实例中,元素都按照索引值依次存储。索引值从0开始。 2.    看集合类的实现,我们首先关心最基本的三个方法的实现。    (1)add方法,就是增加元素的方法。    (2)remove方法,就是删除元素的方法。    (3)contains方法,就是检索元素的方法。    因为在使用过程中,这三个方法是最常用的。不同的实现方式,效率差别比较大。    其次,可以看每个类的迭代器的实现方式。 ...
1. 永不为空的循环链表 第一次插入:head.next=head; 在x后插入t: t.next=x.next;x.next=t; 移走x之后的节点:x.next=x.next.next; 循环遍历: t=head; do{…t=t.next;}while (t!=head); 检查是否只有一个数据项: If(head.next==head); 2. 头指针初始化为null,尾指针为null,其实就是非循环单链表 初始化:head=null; 在x后插入t: if(x==null){head=t;head.next=null;} else{t.next=x.next;x.next=t} 移走 ...

关于回溯法

    博客分类:
  • J2SE
回溯的基本思想是:从一个给定的起始位置,我们希望到达一个目的位置。我们重复地进行选择(可能是猜测)下一个位置应当是什么。如果一个给定的选择是有效的,即新的位置可能位于通向目的位置的途径中,则前进到这个新的位置,然后继续。如果一个给定的选择通向了死胡同 ,则回到前面的位置,进行其他的选择。回溯就是通过一系列位置选择到达目的位置,并且在不能到达目的位置时反向退回的策略。 回溯类的通用接口如下: import java.util.*; public interface Application{ //如果位置pos为通向目标位置的路径上,返回true,否则返回false boolean vali ...

关于递归

    博客分类:
  • J2SE
当需要解决的问题具有如下两个特性时就可以考虑使用递归: (1) 问题的复杂度可以降低,但是保持原始问题的形式。 (2) 最简单的情况可以直接解决。 其实递归的两个特性分别对应数学归纳法里的归纳事件和基本事件。 注意 1) 递归方法通常需要消耗更多的内存。因为一般递归调用时要保存返回地址和参数的副本。 2) 在使用递归方法时要防止出现无穷递归,否则将出现StackOverflowError错误。 3) 当使用一个递归程序时,需要考虑到编译环境必须维护一个与递归深度成正比例的堆栈。对于一个庞大的问题,栈所需要的空间可能会使我们无法使用递归解决方案。例如,我们在定义一个链表的一些方法,使用递归的方式 ...
当一个类A使用了另一个类B时,到底是合成还是聚合的关系呢? 例如 public class A{ B b; ... } 当一个A类型的对象销毁了其存储单元时,引用变量b也将销毁存储单元。但是b引用的对象是否也应当销毁存储单元?有两种情况需要考虑。 (1)合成(Composition):当一个A类型的对象销毁了存储单元时,b引用的对象也销毁存储单元。换句话说,b引用的对象的存在依赖于A类型的对象。 (2)聚合(Aggregation):当一个A类型的对象销毁了存储单元时,b引用的对象并没有销毁存储单元。换句话说,b引用的对象独立于于A类型的对象。 聚合的情况下,代码如下所示: public c ...
纪念D明天走~~(前序) 一直认为D是一个智商很高的人,都说IQ〉150的人玩SC,都知道D玩SC很强, 去年毕业时SC学校告别赛,D在我们的百般鼓励之下还是没有勇气去show一把, 失望之余有点不太理解,本科时一直对D有神秘,也许 ...
Global site tag (gtag.js) - Google Analytics