Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
R-与“length”的等价函数,具有O(log(n))复杂度_R_Loops_Time Complexity - Fatal编程技术网

R-与“length”的等价函数,具有O(log(n))复杂度

R-与“length”的等价函数,具有O(log(n))复杂度,r,loops,time-complexity,R,Loops,Time Complexity,我需要写一个与函数长度相等的函数-不使用 当然是长度。它还必须使用循环 我需要为这个函数编写两个版本。第一种是基于复杂度的,第二种需要使用Ologn 编辑 另外,假设向量不包含NA值 我的尝试: my_length_bs是否确实存在Tn=logn?回答您当前的问题,您的第二个函数只是第一个函数的模糊版本。外部for循环只执行了两次,实际上什么都不做,而内部while循环基本上是您的第一个函数,它完成了所有的工作。要看到这一点,请将printk行放在k之前,我认为检查NA以确定长度的逻辑不是一个好

我需要写一个与函数长度相等的函数-不使用 当然是长度。它还必须使用循环

我需要为这个函数编写两个版本。第一种是基于复杂度的,第二种需要使用Ologn

编辑

另外,假设向量不包含NA值

我的尝试:


my_length_bs是否确实存在Tn=logn?

回答您当前的问题,您的第二个函数只是第一个函数的模糊版本。外部for循环只执行了两次,实际上什么都不做,而内部while循环基本上是您的第一个函数,它完成了所有的工作。要看到这一点,请将printk行放在k之前,我认为检查NA以确定长度的逻辑不是一个好主意。R中的向量可能包含缺少的值。比较:xyes,你的是正确的,但是对于这种情况,我们假设向量不包含NA值。我们的第二个版本没有多大意义。在k=2中硬连线,然后在1:log22^k中有循环fori。“这不正是因为我在1:2中吗?”约翰科勒曼,但问题是我需要在1:2中生成函数Ologn@Jneven你为什么要删除你的5000位数问题?我正要回答。。。
my_length_l <- function(x){
  k <- 1
  while(!is.na(x[k])){
  k <- k+1
  }
 return(k-1)
}
my_length_bs <- function(x){
  if(is.na(x[2])){return(1)}
  else
    {
  k <- 2
  for(i in 1:log2(2^k)){
  while(!is.na(x[k])){
  k <- k+1
  }
  }
    }
 return(k-1)
}