从0开始学习数据结构-初识③算法分析

214 阅读2分钟

这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

算法分析

目的

算法分析的目的在于改进算法

如何对一个算法进行评价?

  • 算法的正确性
  • 算法的健壮性:对于不合理的输入,能够给出提示信息(对不合理的数据输入的反应和处理能力)
  • 时间复杂度:根据程序在计算机中运行时间多少来度量的,是一个算法运行时间的相对量度
  • 空间复杂度:根据程序占用计算机存储空间多少来度量的
  • 其他方面,如算法的可读性、间接性、可移植性及易测试性的好坏等

时间复杂度

image.png 上面几个因素前3个因素与计算机系统的硬件、软件环境以及要解决的问题的规模有关,与算法本身无直接关系,只有第4个因素之间与算法有关。因此,把算法中语句执行的次数作为算法时间多少的量度

  • 频度统计法:把语句执行次数的多少作为算法时间复杂程度的度量分析方法
  • 语句频度:指某语句被重复执行的次数

image.png

空间复杂度

一个算法在计算机存储器上所占用的存储空间包括以下3个部分:

  • 存储算法本身所占用的空间:与算法书写的长短成正比
  • 算法的输入/输出数据所占用的空间:由解决的问题决定,不随算法的不同而改变
  • 算法在运行过程中临时占用的空间:因算法而异

算法的空间复杂度主要包括:局部变量(算法范围内定义的变量)所占用的存储空间和系统为实现递归(如果算法是递归的话)所使用的堆栈空间两个部分

其他方面

评价一个算法质量优劣标准的第3个方面包括算法的简洁性可读性