Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 这个时间复杂度计算对吗?_Algorithm_Time Complexity_Big O - Fatal编程技术网

Algorithm 这个时间复杂度计算对吗?

Algorithm 这个时间复杂度计算对吗?,algorithm,time-complexity,big-o,Algorithm,Time Complexity,Big O,我试图用大O(n)使代码像Array.prototype.indexOf一样工作 这就是我如何计算代码中的大O。是这样吗 n=haystack.length 当谈到最坏的情况时,我想是目标位于干草堆的末端 第一次运行O(n)=>因为有一个for循环, 第二次运行O(n-1)=>递归调用函数 第三次运行O(n-2) … 第k次运行O(n-k) 当它加在一起时 O(n)+O(n-1)+O(n-2)+O(n-k);=2n^2-3/2nk=>O(n^2) 我说得对吗?如果我不是,那么请让我知道如何计算我

我试图用大O(n)使代码像Array.prototype.indexOf一样工作
这就是我如何计算代码中的大O。是这样吗

n=haystack.length
当谈到最坏的情况时,我想是目标位于干草堆的末端

第一次运行O(n)=>因为有一个for循环,
第二次运行O(n-1)=>递归调用函数
第三次运行O(n-2)

第k次运行O(n-k)

当它加在一起时
O(n)+O(n-1)+O(n-2)+O(n-k);=2n^2-3/2nk=>O(n^2)

我说得对吗?如果我不是,那么请让我知道如何计算我的代码的时间复杂度
谢谢,注意安全

var strStr = function(haystack, needle) {
  let result;
  let isFirst = false;
  
  return (function recursiveStrStr (haystack, needle) {
      if (!needle) return result = 0;
      if (!haystack) return result = -1;

      let j = 0;
      for (let i = 0; i < haystack.length; i++) {
        if (haystack[i] === needle[j]) {
          if (!isFirst) {
            result = i;
            isFirst = true;
          }
       
          needle = needle.slice(j + 1);
          haystack = haystack.slice(i + 1);
          return (!needle) ? result : recursiveStrStr(haystack, needle);
          
          }
      }
      return -1;

  })(haystack, needle);
}
var strstrstr=功能(草堆、针){
让结果;
让isFirst=false;
return(函数recursiveStrStr(干草堆、打捆针){
如果(!针)返回结果=0;
如果(!haystack)返回结果=-1;
设j=0;
for(设i=0;i
strStr(“cbca”、“ca”)返回0,是否应该发生这种情况?不应该发生这种情况来解决问题。但我无法用正常工作的案例计算其时间复杂度,所以我想问一下~THNKSCORTRINCE起到了一定的作用。很难分析那些对自己所做的事情感到困惑的代码。slice是O(N)-,对于某些输入,代码会一个接一个地在干草堆中切片,这就得到了O(N^2)。如果你用一个恒定时间的运算替换切片,我相信你可以得到O(N)。