算法基础概述

106 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

算法概述

  • 同一问题不同解决方法
  • 通过时间和空间复杂度判断算法的优劣
  • 算法没有最好的,只有最合适的,学习算法是为了积累学习思路,掌握学习思路,并不是为了解决某问题去记住某种算法;对于时间复杂度与空间复杂度,现在大多数开发情况下,我们都在使用以空间换时间,耗费更多的内存,来保证拥有更快的速度。
  • 各排序算法复杂度及稳定性在这里插入图片描述

什么是算法

  • 算法是指对解题方案的准确而完整的描述,是一系列解决问题的清晰指令。 算法代表着用系统的方法描述解决问题的策略机制。

  • 一个算法的优劣可以用空间复杂度和时间复杂度 来衡量。

  • 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率 算法分析的目的在于选择合适算法和改进算法

  • 空间复杂度:是对一个算法在运行过程中临时占用存储空间大小量度

  • 时间复杂度:程序运行时基本操作所执行的次数

算法的基本特征

  • 有穷性(Finiteness) 算法的有穷性是指算法必须能在执行有限个步骤之后终止。

  • 确切性(Definiteness) 算法的每一步骤必须有确切的定义。

  • 输入项(Input) 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件。

  • 输出项(Output) 一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。

  • 可行性(Effectiveness) 算法中执行的任何计算步骤都可以被分解为基本的可执行操作步,即每个计算步都可以在有限的时间内完成(也程之为有效性)

  • 对于算法进行特别具体的细致分析虽然很好,但在实践中的实际价值有限。对于算法的时间性质和空间性质,最重要的是其数量级和趋势,这些是分析算法效率的主要部分。而计量算法基本操作数量的规模函数中那些常量因子可以忽略不计。例如,可以认为 3n^2 和 100n^2 属于同一个量级,如果两个算法处理同样规模实例的代价分别为这两个函数,就认为它们的效率“差不多”,都为n^2级。