Algorithm 给出一段代码的大O计算

Algorithm 给出一段代码的大O计算,algorithm,big-o,Algorithm,Big O,这些程序进行计算∑ 我用N表示数组的长度a 第一个是O(N^2)。内部循环运行1、2、3、4、…、N-1次。该总和约为N(N-1)/2,即O(N^2) 第二个是O(N)。它只是在数组的长度上进行迭代。程序的复杂性基本上是执行的指令数 当我们谈论上界时,它意味着我们正在考虑最坏情况下的事情,这是每个程序员都应该考虑的 设n=a.长度 现在回到你的问题,你是说第一个程序的时间复杂度应该是O(nlogn),这是错误的。当i=a.length-1时,内部循环也将从j=0迭代到j=i。因此,复杂性将是O(

这些程序进行计算∑ 我用N表示数组的长度
a

第一个是O(N^2)。内部循环运行1、2、3、4、…、N-1次。该总和约为N(N-1)/2,即O(N^2)


第二个是O(N)。它只是在数组的长度上进行迭代。

程序的复杂性基本上是执行的指令数

当我们谈论上界时,它意味着我们正在考虑最坏情况下的事情,这是每个程序员都应该考虑的

n=a.长度

现在回到你的问题,你是说第一个程序的时间复杂度应该是
O(nlogn)
,这是错误的。当
i=a.length-1
时,内部循环也将从
j=0迭代到j=i
。因此,复杂性将是
O(n^2)


您判断第二个程序的时间复杂度是正确的,即
O(n)

您能缩进您的代码吗?在程序1中,第二个循环随后执行1,2,3,…,N次迭代,在平均值上这是N/2次迭代,执行N次,即O(N/2*N)->O(N*N)->O(N^2)(事实上,你可以加上1+N-1=N,2+N-2=N,3+N-3=N,你将有N/2次N次迭代,可能的重复经常出现,值得记住。“我知道大O是最坏情况或上界。”这并不完全正确。O是数学函数增长顺序的上界。该数学函数可以描述(除其他外)最坏情况、最佳情况或平均情况下算法的运行时间。