R-与“length”的等价函数,具有O(log(n))复杂度
我需要写一个与函数长度相等的函数-不使用 当然是长度。它还必须使用循环 我需要为这个函数编写两个版本。第一种是基于复杂度的,第二种需要使用Ologn 编辑 另外,假设向量不包含NA值 我的尝试: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以确定长度的逻辑不是一个好
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)
}