Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_Big O_Max - Fatal编程技术网

Algorithm 最大子阵列运行时间

Algorithm 最大子阵列运行时间,algorithm,big-o,max,Algorithm,Big O,Max,我目前正在分析蛮力算法和分治算法(递归) 使用蛮力算法,最坏情况下的运行时间是O(n^2)。 使用递归算法,最坏情况下的运行时间是O(n*log(n)) 但是蛮力对于小的输入,在某个常数,比如说k,实际上更快,所以我想在k之前使用蛮力,然后递归 我不确定如何分析这个,即使用参数n和k。 (插入/合并排序也有类似的问题,需要O(k^2*(n/k))=O(n*k),所以我想我可以使用相同的结果,但是…) 让我尝试重新表述,让我们使用θ符号 “递归中使用蛮力的算法的渐近运行时间是多少(使用n和k作为

我目前正在分析蛮力算法和分治算法(递归)

使用蛮力算法,最坏情况下的运行时间是O(n^2)。 使用递归算法,最坏情况下的运行时间是O(n*log(n))

但是蛮力对于小的输入,在某个常数,比如说k,实际上更快,所以我想在k之前使用蛮力,然后递归

我不确定如何分析这个,即使用参数n和k。 (插入/合并排序也有类似的问题,需要O(k^2*(n/k))=O(n*k),所以我想我可以使用相同的结果,但是…)


让我尝试重新表述,让我们使用θ符号

“递归中使用蛮力的算法的渐近运行时间是多少(使用n和k作为参数),其中蛮力比递归快,k=50。”


我必须在上面同时包含参数n和k,递归树是迄今为止我们测试这些问题的唯一主题。

记住big-O谈论的是算法的长期增长率。形式上,它表示,对于足够大的n,一个函数的行为小于另一个函数的常数倍数。这意味着,如果您确定常数k的任意选择,然后对n使用O(n2)算法≤ 对于所有的n>k,整个运行时间将是O(n logn),因为当n足够大时,算法的行为完全取决于O(n logn)算法的行为

也就是说,您应该研究一种算法,该算法用于在O(n)时间、O(1)空间内解决此问题,并且只需对数组进行一次遍历。几乎可以肯定,它将比您的任何一种方法都要快(无论是实际的还是非对称的)


希望这有帮助

卡丹的算法怎么了?蛮力是O(n^2)。但是对于足够小的输入,它不是O(n^2),因为它比递归的更快。@user1261561-短语“对于小的输入,它是O(n^2)”在这里没有真正的意义。Big-O必然描述长期增长率,而完全忽略小投入的行为。