《图解数据结构-- 使用Python》笔记 第1章

1.3 认识程序设计

1.3.3 面向对象程序设计

1. 什么是“面向对象程序设计”

“面向对象程序设计”(Object-Oriented Programming)的主要设计思想:将存在于日常生活中随处可见的对象(object)概念应用在软件开发模式中。OOP让我们以一种更生活化、可读性更高的设计思路来进行程序的开发和设计,并且开发出来的程序也更容易扩充、修改及维护。

2. 面向对象语言特性

  • 封装性(Encapsulation)
  • 继承性(Inheritance)
  • 多态性(Polymorphism)

1)封装

封装:用“类”来实现“抽象数据类型”(ADT)。

类:一种具体描述对象状态与行为的数据类型。

对象:按照“类”这个模型或蓝图产生的实例。

举例来说,

汽车类 -》 汽车实体对象

2)继承

继承:允许代码重复使用,同时可以表达树形结构中,父代与子代的遗传现象。

举例来说,

“汽车类”就是“交通工具类”的子类,“汽车类”可以继承“交通工具类”。

3)多态

多态:让具有继承关系的不同类别对象可以调用相同名称的成员函数。

1.4 算法性能

这一小节主要谈两个概念

  • “时间复杂度”(Time Complexity)
  • “空间复杂度”(Space Complexity)

1)空间复杂度

空间复杂度:估算一个算法在运行过程中临时占用内存空间的大小,是一种渐进表示法。

2)时间复杂度

时间复杂度:用某一个算法执行步骤技术来衡量运行时间的标准,也是一种渐进表示法。

由于涉及变量存储类型与表达式的复杂度,因此没有必要精确计算时间的长短。使用“估算”的办法衡量时间更为恰当,详细定义如下:

  • 在一个完全理想状态下,定义T(n)来表示程序执行所要花费的时间,其中n代表数据输入量。最大运行时间用Big-Oh表示。
  • 分析算法的时间复杂度必须考虑它的成长比率,往往是一个函数。

1.4.1 Big-Oh

O ( f ( n ) ) O(f(n)) O(f(n)):某算法在计算机中所需运行时间不会超过某一常数倍数的 f ( n ) f(n) f(n)

这一部分的重点是:学会计算时间复杂度。

例1.4.1 计算 T ( n ) = 3 n 3 + 2 n 2 + 5 n T(n)=3n^3+2n^2+5n T(n)=3n3+2n2+5n的时间复杂度

答:因为多项式 T ( n ) T(n) T(n)的最高项次数是3,所以时间复杂度为 O ( n 3 ) O(n^3) O(n3)

1.4.2 Ω \Omega Ω

Ω \Omega Ω也是一种时间复杂度的渐进表示法。如果说Big-Oh表示运行时间估算的最坏情况,则 Ω \Omega Ω就是运行时间估算的最好情况。

1.4.3 Θ \Theta Θ

Θ \Theta Θ是一种比Big-Oh与 Ω \Omega Ω更精确的时间复杂度的渐进表示法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值