【3】数据结构与算法---快速入门

第 2 章 快速入门

2.1 入门案例

案例:如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),求出所有a、b、c可能的组合?

解决方案:

1.猜三个,条件匹配

2.猜两个,另一个计算

算法五特性:

输入、输出、有穷性、确定性、可行性

​ 1、输入: 算法具有0个或多个输入

​ 2、输出: 算法至少有1个或多个输出

​ 3、有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步 骤可以在可接受的时间内完成
4、确定性:算法中的每一步都有确定的含义,不会出现二义性
5、可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成

算法评判标准:

基本环境+代码目标

服务器环境是否一致/两种代码是否在一台机器上运行

两种代码的目的一致

分析代码的方法:

	(1)前提:

		环境一致

		目标一致

	(2)思路:

		代码由内向外依次执行

	(3)内容:

		步骤数量

		单位执行时间

		关系:步骤数量*单位执行时间=代码运行时间(时间)

2.2 算法复杂度

(1)时间复杂度

时间复杂度:做一件事情所需要花费的时间

规律趋势 -----渐进时间复杂度 ——–表现形式大O技法 O(表达式主干)

时间复杂度分类:

时间复杂度说明
最优梦想(最少)
最坏最低保障******
平均统计

时间复杂度基本计算规则:

​ 1.基本规则:一步到位 O(1)

​ 一步:在一个具体的数字步骤范围中,肯定能完成这件事

​ 2.顺序规则:一步一步O(n)

​ 一步:在一个不具体的数字步骤范围中,肯定能完成这件事

​ 3.循环规则:

​ 简单循环 乘积的关系 O(n**3)

​ 递归循环 O(logn)

​ 4.分支规则:最坏时间复杂度

​ 5.抓主干:

​ 6.默认最坏时间复杂度:

(2)空间复杂度

空间复杂度:代码的运行所占用的存储空间

目的:用空间换取时间

(3)常见时间复杂度

常数最小,n越多,值越大,效率越低,时间越长

2.3 性能分析模型详解

timeit模块使用方法

1.构造一个测试对象

​ 测试对象是一个单一功能的函数

2.对整个测试对象进行指定次数的测试

给一个的指定数值,返回一个总时间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值