Python全系列 教程
3567个小节阅读:5930k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
好的程序设计无外乎两点,"快"和"省"。"快"指程序执行速度快,高效,"省"指占用更小的内存空间。
这两点其实就对应"时间复杂度"和"空间复杂度"的问题。
所以在算法设计中,我们的步骤是:
找到问题解法
寻求最优解法
提示
我们的目标是设计“既快又省”的数据结构与算法
例子
二分查找就是一个非常经典的算法,而二分查找经常需要作用在一个有序数组上
这里二分就是一种折半的算法思想, 而数组是我们最常用的一种数据结构,支持根据下标快速访问
实际上,在真正的项目开发中,大部分时间都是2种操作:
在数据操作过程中需要合理地抽象、组织、处理数据,如果选用了错误的数据结构,就会造成代码运行低效
这也是我们需要学习算法和数据结构的原因
效率评估方法主要分为两种:实际测试、理论估算
有算法 A
和算法 B
,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。
实际测试有2个问题:
由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率,简称复杂度分析
复杂度分析描述了随着输入数据大小的增加,算法执行所需时间和空间的增长趋势
注意
理论估算关注的是经下几个点:
- 时间复杂度 和 空间复杂度
- 算法运行效率与输入数据体量之间的关系
- 关注的不是运行时间或占用空间的具体值,而是时间或空间增长的“快慢”
这里我们用一种很原始的方法来学习算法: