算法时间复杂度简介(一)

算法时间复杂度简介

介绍

算法的两个衡量标准:时间复杂度&空间复杂度 

比较算法的执行时间

实验评估方法

分析评估方法

最佳案例分析

最坏情况分析

平均案例分析

结论

分析一个简单的Java程序


介绍

通常有几种不同的算法可以解决给定的计算问题。 因此,比较这些替代方案是很自然的。 但是我们如何知道算法A是否优于算法B?因此,为了后面更好的理解以及选择更优的算法,我们首先要了解的是如何去比较各种算法之间的复杂度,其中最重要的两点就是比较算法的时间复杂度和空间复杂度。


算法的两个衡量标准 

决定算法“优劣”的一个重要因素是解决给定问题所花费的时间。 如果算法A比算法B花费更少的时间解决相同的问题,则认为算法A更好。

比较两种算法的另一个重要因素是解决给定问题所需的内存量。 需要较少内存的算法被认为更好。

比较算法的执行时间

我们将重点关注第一个因素,即执行时间。 我们如何比较两种算法的执行时间?

实验评估方法

我们可以实现这两种算法,并在计算机上运行它们,同时测量执行时间,执行时间短的算法更优。 但是,如果使用这种“试验评估的方法”,必须以公平的方式进行。所以通常需要在以下控制变量的条件下进行:

  • 必须在相同的输入大小上测试被比较的算法。但是,由于有的算法中存在条件语句,所以即使是相同算法,在输入相同的数据数量相同的情况下,运行时间也可能会因提供给它的实际输入而有所不同。 这意味着要比较的算法必须在同一输入上进行测试。 由于对于特定输入,一种算法可能比另一种算法不利,因此我们必须针对所有可能的输入值进行详尽的测试。 所以,这种苛刻的测试方式是难以实现的。
  • 实现这两种算法的程序必须在完全相同的硬件和软件环境下进行测试。 尽管可能如此,我们可以为所有科学家分配一台机器来测试他们的算法。 即使我们这样做了,现代操作系统中的任务调度也涉及很多随机性。 如果与“最佳”算法相对应的程序遇到过多的硬件中断该怎么办? 所以即使是使用了相同的硬件/软件环境,也难以确保公平的比较。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jersey小熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值