topk算法 算法的时间复杂度仅与问题的规模有关?
算法的时间复杂度仅与问题的规模有关?
对于大多数题库中算法的时间复杂性,答案是选择与问题大小相关的算法。同时,干扰项往往是计算机硬件性能、编译质量、编程语言等。(直接回答)
本书的其他版本也提到了它与要处理的数据的初始状态有关,例如它是否有序。(补充答案)
算法的时间复杂度,即效率,通常只与算法本身的性质有关。算法本身的性质还包括所涉及问题的规模,以及选择什么样的算法策略。(个人经验)
算法的时间复杂度,即重复基本操作的次数,是问题n大小的函数f(n)。算法的时间度量是t(n)=O(f(n)),这意味着随着问题n大小的增加,算法执行时间的增长率是最小的与F(n)相同,称为渐近时间复杂度,又称时间复杂度。让我举一个例子来说明,例如,一个排序算法的时间复杂度O(n),那么运行时间与元素数n成正比,另一个排序算法的时间复杂度是O(n*logn),那么运行时间与n*logn成正比,所以当n足够大时,第一个算法总是快的。但是,如果n不是很大,那么具体的运算时间并不总是像前一种算法那样快,比如刚才第一种算法的实际速度是100×n,第二种算法的实际速度是2×n×logn,n=100,那就是第二种算法的速度快
因为计算机执行起来需要时间因此,对于算法的质量,我们需要估计完成计算所需的时间。
然而,计算机消耗的时间是执行指令,因此我们估计的时间复杂度实际上是估计一个程序相对于其输入可以执行多少指令才能给出答案。
如果我们有n个输入,那么t(n)表示它执行的指令数,然后用t(n)乘以每条指令的执行时间就是实际消耗的时间。
但是每个指令的执行时间由计算机配置决定,因此不能用于评估算法。因此我们使用t(n),即相对于输入执行的指令数来表示算法的时间复杂度。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。