目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

Python全系列 教程

3567个小节阅读:5930k

收藏
全部开发者教程

鸿蒙应用开发

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(399)
赞(0)

算法效率评估

image-20231129001533589

什么样的程序才是好的程序

好的程序设计无外乎两点,"快""省"。"快"指程序执行速度快,高效,"省"指占用更小的内存空间。

这两点其实就对应"时间复杂度"和"空间复杂度"的问题。

所以在算法设计中,我们的步骤是:

  • 找到问题解法

  • 寻求最优解法

    • 时间效率:算法运行速度的快慢
    • 空间效率:算法占用内存空间的大小

提示

我们的目标是设计“既快又省”的数据结构与算法

例子

二分查找就是一个非常经典的算法,而二分查找经常需要作用在一个有序数组上

这里二分就是一种折半的算法思想, 而数组是我们最常用的一种数据结构,支持根据下标快速访问

image-20231128154629676


实际上,在真正的项目开发中,大部分时间都是2种操作:

image-20231128155341815

在数据操作过程中需要合理地抽象、组织、处理数据,如果选用了错误的数据结构,就会造成代码运行低效

这也是我们需要学习算法和数据结构的原因

效率评估方法主要分为两种:实际测试、理论估算

实际测试

有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。

实际测试有2个问题:

  • 难以排除测试环境的干扰因素
  • 展开完整测试非常耗费资源

理论估算

由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率,简称复杂度分析

复杂度分析描述了随着输入数据大小的增加,算法执行所需时间和空间的增长趋势

注意

理论估算关注的是经下几个点:

  • 时间复杂度 和 空间复杂度
  • 算法运行效率与输入数据体量之间的关系
  • 关注的不是运行时间或占用空间的具体值,而是时间或空间增长的“快慢”

学习方法

这里我们用一种很原始的方法来学习算法:

  • 阅读资料了解算法思想
  • 纸笔模拟尝试理解
  • 用自己熟悉的编程语言来实现

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2