数据结构与问题求解
名字到底多长
算法题来自大神的博客:http://blog.csdn.net/v_JULY_v?viewmode=contents
展开
-
1 java基础知识
static method ; java执行过程; 注释; 整型类型; 转义字符; 赋值运算符;一元运算符; 强制转换static method相当于非面向对象语言的函数或者过程:这个是说不用生成对原创 2012-10-06 21:26:28 · 322 阅读 · 0 评论 -
11 栈与编译器(一):后缀表达式
后缀表达式不需要括号只用双操作数运算符与数字就可以模拟任意因为加括号而得到优先级提升的运算,就是无需括号可以模拟任意运算,例如12+3*等价于(1+2)*3,实际上后缀表达式是对于中缀表达式在计算机中的运算方法中缀表达式的计算方法:一个operator栈---or,一个operand栈-----od,顺序扫描操作数,如果是数字的话直接入od栈,遇到运算符则判断运算符与or栈的栈顶运算符优先级大原创 2012-11-16 15:25:58 · 555 阅读 · 0 评论 -
11 栈与编译器(二):括号匹配
文本中遇到左括号入栈,遇到右括号则查栈顶是否匹配并弹出,直到结束。package nuaa.ds;import java.io.IOException;import java.io.PushbackReader;import java.io.Reader;/** * 扫描输入流,生成需要的识别的标记序列 * @author Administrator * */public原创 2012-11-16 15:30:28 · 512 阅读 · 0 评论 -
19 二叉查找树 (一)
package nuaa.ds;//对于重复项:只记录一项,维护对重复项的计数public class BinarySearchTree> { protected BinaryNode root; public BinarySearchTree(){ } public void insert(T x) throws Exception{ root = this.ins原创 2012-11-28 18:03:12 · 365 阅读 · 0 评论 -
15 内部类和ArrayList的实现
关于内部类:写在内部就是私有的,内部类还是public纯属设计有问题,既然public了为嘛还要塞入内部,内部类一定要是public的话,初始化要依赖外部类的引用,不然类定义里面隐含的Outer.this无法实例化Outer访问Inner: 一定要创建inner的对象(不然实例化的时候很明显有问题),要么就都是static;Inner在Outer中实例化以后,可以直接Inner的私有属性,原创 2012-10-26 17:33:07 · 1191 阅读 · 0 评论 -
16 栈与队列
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。栈的代码package nuaa.ds;public class ArrayStack> { private StackNode[] theArray; private int topOfStack; private static fin原创 2012-09-30 12:05:25 · 292 阅读 · 0 评论 -
17 链表
//增加头节点和尾节点不放任何数据,牺牲单个节点空间的意义在于,//省略了增加删除操作中,对于头部和尾部的讨论,编码变得更容易package nuaa.ds;import java.util.AbstractCollection;import java.util.Collection;import java.util.ConcurrentModificationException;原创 2012-10-30 13:35:18 · 549 阅读 · 0 评论 -
14 图与路径
图的本质就是一个序偶(v,w),v表示起点,w表示终点dense graph指边数的数量级是顶点数的平方阶,与之对应的还有sparse graphadjacency matrix 对于dense graph的初始化代价是可以接受的,但sparse graph很明显存在大量的时间和空间的浪费;adjacency list对于sparse graph更合适对于sparse原创 2012-10-18 21:43:21 · 398 阅读 · 0 评论 -
9 随机化
随机算法在通用技术中使用:就是在几种差不多的可能的随机选择一种进行下一步计算机产生的是pseudorandom numbers,不可能真正随机uniform distribution:任意数在任意位置上出现的概率同。任意2个连续随机数和的奇偶同,随机产生的大量的数应该会有重复(对于0到999,大概有368个永远不会出现)seed:随机数发生器的初始值原创 2012-10-16 21:28:28 · 344 阅读 · 0 评论 -
7 递归
driver routinecompound interest ruleRSAdivide and conquerdynamic programmingbacktracking algorithm原创 2012-10-13 20:29:31 · 301 阅读 · 0 评论 -
6 集合类API
总结下:1 iterator pattern 2 for-each循环 3 Collections默认的Comparator 4Collection集合的实现和一些细节,书第四部分的时候回头再看。iterator pattern 就是抽象出集合类的公共行为(用接口描述),接口的实现用与原来的类无关的方式原创 2012-10-13 16:45:33 · 378 阅读 · 0 评论 -
5 算法分析
线性算法是最高效的算法大O表示法的意义对数据的增长导致时间增长的优劣,更精确的说,大O表示的是增量率,前提是数据sufficiently large局限就是:数据量的sufficiently large,内存不可能无限大。brute force algorithm ; worst-case bound ; average-case boundbi原创 2012-10-11 21:40:54 · 369 阅读 · 0 评论 -
4 继承
继承是一种 direct code reuse但个人觉得把代码重用当成OOP的优点说服力不大,JS框架Ext等等将函数复用到了极致,也就是所谓的一次编写多次使用,当然Ext模拟了面向对象的方式来实现重用,但这个其实是OOP的另一个优点:代码的组织优越;代码重用的另一个方面继承机制,可以重用基类的所有代码,但实际上一般情况下派生类所能使用的也只是基类中的公有方法,又回到了重用方法上去了。原创 2012-10-10 22:04:30 · 388 阅读 · 0 评论 -
3 对象与类
protected;javadoc;mutator;accessor;instance member;static initializer;static import directiveprotected包内也能访问c++实现细节与规范的分离通过cpp和h文件实现,java通过javadoc实现,一些标签包括@param、原创 2012-10-09 20:40:15 · 332 阅读 · 0 评论 -
2 引用类型
关于Java对象复制(Clone、深度Clone以及序列化与反序列化的使用)java中说不允许重载运算符貌似也不全对,因为String的+=和+运算符就是重载,不过String算是Java的特殊类型Integer.toString(55,2): 55 in base 2multidimensional array: same type && different leng原创 2012-10-08 22:23:46 · 300 阅读 · 0 评论 -
20 散列表
散列表的本质就是:hash函数计算后得到的名值对已经当hash函数算到相同的名的时候,解决冲突的方法。最简单的就是字符ascii码当下标访问长度为128的数组,字符的值直接被当作名访问数组的对应项,即:index = hash(ch),这里很明显不存在冲突。hash函数举例(实际上hash函数是很难设计的):字符串得到hash值代码package nuaa.hash;pub原创 2012-11-21 10:42:47 · 378 阅读 · 0 评论