摘要: 一个好的散列函数 如果当一个元素被插入时与一个已经插入的元素散列到相同的值,那么就产生一个冲突,这个冲突需要消除。解决这种冲突的方法有几种,其中最简单的两种:分离链接法和开放地址法 分离链接法 5.4 不用链表的散列表 5.4.1 线性探测法 只要表足够大,总能够找到一个自由单元,但是如此花费的时间 阅读全文
posted @ 2019-03-19 20:38 tjjloveworld 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树 懒惰删除:当一个元素要被删除时,它仍留在树中,而只是被标记为删除。 AVL树 4.10 编写一个程序,该程序列出一个目录中所有的文件和大小 阅读全文
posted @ 2019-03-19 10:02 tjjloveworld 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 使用ArrayList的优点在于,对get和set的调用花费常数时间。其缺点是新项的插入和现有项的删除代价昂贵,除非变动是在ArrayList的末端进行。 使用LinkedList的优点在于,新项的插入和现有项的删除均开销很小,这里假设变动项的位置是已知的。使用LinkedList的缺点是它不容易作 阅读全文
posted @ 2019-03-18 13:41 tjjloveworld 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 最大子序列和问题的求解 算法1:时间复杂度为O(N^3) 算法2:时间复杂度为O(n^2) 算法3:时间复杂度O(N logN) 算法4:时间复杂度O(N) 折半查找 时间复杂度O(N) 欧几里得算法 计算最大公因数(log N) 高效率的幂运算 (logN) 阅读全文
posted @ 2019-03-17 14:29 tjjloveworld 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 当一个函数用它自己来定义时就被称为是递归的。 递归的四个基本法则 1.基准情形。必须总要有某些基准的情形,它们不用递归就能求解 2.不段推进。对于那些要递归求解的情形,递归调用必须总能够朝着一个基准情形推进。 3.设计法则。假设所有的递归调用都能运行。 4.合成效益法则。在求解一个问题的同一实例时, 阅读全文
posted @ 2019-03-17 11:16 tjjloveworld 阅读(457) 评论(0) 推荐(0) 编辑