判断算法的好坏

  • 如果单从执行效率上进行评估

    • 比较不同算法对同一组输入的执行处理时间,即事后统计法
      • 缺点:执行时间严格依赖于硬件以及运行时各种不确定因素
      • 必须编写相应的测试代码
      • 测试数据的选择难以确保公正性
  • 从以下维度来评估算法的优劣

    • 正确性、可读性、健壮性(对不合理的输入的反应能力和处理能力)

    • 时间复杂度:估算程序指令的执行次数(执行时间)

    • 空间复杂度:估算所需占用的存储空间

  • 一般用大O表示法来描述复杂度,它表示的是数据规模n对应的复杂度

    • 忽略常数、系数、低阶
    • 对数阶一般忽略底数,无论底数,只要是对数就是logn
    • O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
    • 可以借助函数生成工具对比复杂度的大小
    • 斐波那契数递归调用算法时间复杂度为2^n,非递归算法时间复杂度为 n
      侵删。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容