跳到主要内容

1.1-算法

本笔记取自 hello-algo 算法,建议自行学习

算法

  • 问题是明确的,包含清晰的输入和输出定义。
  • 具有可行性,能够在有限步骤、时间和内存空间下完成。
  • 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。

数据结构,提供了格式化的数据存储,以提供输入,算法计算,最后输出。

数据结构与算法是独立于编程语言的。

算法复杂度

在算法设计中,我们依次以两个层面为目标:

  • 找到问题解法:算法需要在规定的输入范围内可靠地求得问题的正确解。
  • 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。

评价算法是否优秀主要有两个维度。当输入变化时,这些效率也会随之改变。

  • 时间效率:算法运行时间的长短。
  • 空间效率:算法占用内存空间的大小。

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

实际测试

  • 实际测试:在真机上运行,所见即是算法的效率(和计算机的性能、IO 操作,数据量等有关,展开完整的测试十分消耗资源)
  • 理论估算:通过计算来估算算法的效率

理论估算

通过一些计算来评估算法的效率,称为渐进复杂度分析,复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。

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

  • 它无需实际运行代码,更加绿色节能。
  • 它独立于测试环境,分析结果适用于所有运行平台。
  • 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。

参考文章

名称链接
https://www.hello-algo.com