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

本文深入探讨了面向对象程序设计(OOP)的概念及其三大特性:封装、继承和多态,同时解析了算法性能评估中的时间复杂度和空间复杂度,通过实例讲解如何计算时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)=3n3+2n2+5nT(n)=3n^3+2n^2+5nT(n)=3n3+2n2+5n的时间复杂度

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

1.4.2 Ω\OmegaΩ

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

1.4.3 Θ\ThetaΘ

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值