《数据结构与算法分析java语言描述》知识点总结(1-2章)

来源:互联网 发布:php比较好的论坛 编辑:程序博客网 时间:2024/06/05 18:04

本科非计算机专业,数据结构与算法基础有待提高。正在看《数据结构与算法分析java语言描述》如图,试着总结一点自己觉得重要的部分大笑大笑


1.引论

  • 选择问题(selection problem)写出一个工作程序并不够,如果这个程序在巨大的数据集上运行,那么运行时间就变成了重要的问题。

1.1 递归

  • 当一个函数用它自己来定义时就称之为递归,通俗的讲就是自己调用自己。Java允许函数是递归的,Java提供的仅仅是遵循递归思想的一种尝试。
  • Java递归思想若无基准的情况也是毫无意义的,递归调用反复进行,直到基类出现。
当编写递归例程时,关键牢记递归四条基本准则:
  1. 基准情形:必须有某些基准情形不用递归就能求解。
  2. 不断推进: 对于那些需要递归求解的情形。递归调用必须总能朝着基准情形的方向迈进。
  3. 设计法则: 假设所有的递归调用都能运行。
  4. 合成效益法则: 在求解一个问题的同一实例时,切勿在不同的递归调动中做重复性的工作。(摊还分析)

1.2 泛型

面向对象的一个重要目标就是对代码重用的支持,支持这个目标重要机制就是泛型机制(generic mechanism),如果除去对象的基本类型外,实现方法是相同的,那么我们就可以用泛型实现来描述这种基本功能。
  • Java并不直接支持泛型实现,泛型编程的实现是通过使用继承的一些基本概念来实现的。如果将一个不兼容类型插入到数组中,那么虚拟机将抛出ArrayStoreException异常。
  • 泛型很大程度上是Java语言的成分,而不是虚拟机中的结构,基本类型不能用作类型参数,因此GenericMemoryCell<int>是非法的,我们必须使用包装类。

2. 算法分析

  • 影响算法性能的指标:1,时间复杂度  2.空间复杂度
  • "分治"策略:把问题分成两个大致相等的子问题,然后递归地对它们求解,这是"分"的部分
  • "联机算法"
  • 具有对数特征的例子:折半查找,欧几里得算法,幂运算

0 0
原创粉丝点击