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

本科非计算机专业,数据结构与算法基础有待提高。正在看《数据结构与算法分析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.空间复杂度
  • "分治"策略:把问题分成两个大致相等的子问题,然后递归地对它们求解,这是"分"的部分
  • "联机算法"
  • 具有对数特征的例子:折半查找,欧几里得算法,幂运算

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值