python - 双变音位算法的最佳/最差/平均时间效率是多少?

标签 python algorithm math

我正在研究双变音位算法。我只想计算算法所属的效率等级。在这里 Python .这是我能找到的最易读的代码。

我不太擅长分析算法的时间,但我知道这个算法中的 while 循环应该花费最多的时间。在本例中,程序从左到右查看字符串中的每个字符:

while pos <= last :

我假设这需要 n 个步骤,其中 n 是字符串的长度。

但是,该算法在该循环内有很多“if”和“elif”语句;我不知道他们是否会显着影响时间。谁能帮我解决这个问题?我想通过总结来计算时间效率。

为了尝试回答我自己的问题,我认为它的最佳效率是长度为 1 的字符串,其中必须输入尽可能少的“if”语句。另一方面,最坏的情况可能只是一个非常长的字符串。

谢谢!

最佳答案

在不考虑所有条件的情况下,这对我来说看起来是线性的。下面有一些异常(exception)的简单规则是 if/then 语句不会影响算法的渐近运行时间,除非它们执行某种循环或递归。我看到的一切看起来都像是恒定时间操作。

如果我真的需要确定的话,下面是我将如何处理它。如果它不是直接依赖于条件语句,则需要寻找一些东西

  1. break 语句和其他改变控制流的东西 - 这可能会减少渐近时间
  2. whilefor 语句中变量的不规则修改,这可能会使算法花费更多时间。在这里,这意味着 poslast 被修改。

这不是一个完整的列表,但它可能对您有所帮助。

关于python - 双变音位算法的最佳/最差/平均时间效率是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368242/

相关文章:

python - 当其他列满足某些条件时,如何使用 fillna() 估算列中的值

python - 使用 Boto 将 S3 上的文件设置为只读

Java - 计算最常见的元素

c++ - 通过线程分配 for 循环迭代

java - 迭代和计算 map 中的数字

math - SAGE Root 于根域

javascript - 计算近似值SVG 椭圆长度? (用Javascript计算近似椭圆周长)

python - 如何将 Python 中的 Discord Bot 部署到 Heroku?

javascript - 如何计算两个数字的最小值?

python strftime 不适用于小时分钟和秒