C++ 以下代码片段的算法复杂性
我们都知道对于像这样的代码片段C++ 以下代码片段的算法复杂性,c++,algorithm,time-complexity,C++,Algorithm,Time Complexity,我们都知道对于像这样的代码片段 for(int i=0;i<n;i++){ //do something} for(int i=0;i执行//做某事的次数应为n/2次 Hence complexity = O(n/2) = O(n) (same as the previous loop) 实际上,很明显,第二个循环将花费更少的时间,因为它只执行语句数的一半。然而,随着n的增长,两个循环的时间复杂度的增长将是线性的。应该执行n/2次//do something Hence complex
for(int i=0;i<n;i++){ //do something}
for(int i=0;i执行//做某事
的次数应为n/2次
Hence complexity = O(n/2) = O(n) (same as the previous loop)
实际上,很明显,第二个循环将花费更少的时间,因为它只执行语句数的一半。然而,随着n的增长,两个循环的时间复杂度的增长将是线性的。应该执行n/2次//do something
Hence complexity = O(n/2) = O(n) (same as the previous loop)
for(int i=0;i<n;i++) { /* do something */ }
实际上,很明显,第二个循环将花费更少的时间,因为它只执行语句数的一半。然而,随着n的增长,两个循环的时间复杂度的增长应为线性
for(int i=0;i<n;i++) { /* do something */ }
和上面一样,这也有复杂性O(n)。注意O(n/2)=O(n)
和上面一样,这也有复杂性O(n)。请注意,O(n/2)=O(n)。当采用大O表示法时,我们假设n是一个正集合
N可以通过两种方式生长
1-线性
2-指数
如果将n乘以整数>1,则P>n呈指数增长。考虑代码片段
for(i=1;i<n;i=i*2){
for(i=1;i0(您给出的代码呈线性增长)
对于线性增长,时间复杂度为O(n)
对于指数增长,时间复杂度为O(logn)
让我们考虑另一个例子
for(i=0;i<n*10;i++){//has Complexity O(n)
对于(i=0;i当采用大O表示法时,我们假设n是一个正集合
N可以通过两种方式生长
1-线性
2-指数
如果将n乘以整数>1,则P>n呈指数增长。考虑代码片段
for(i=1;i<n;i=i*2){
for(i=1;i0(您给出的代码呈线性增长)
对于线性增长,时间复杂度为O(n)
对于指数增长,时间复杂度为O(logn)
让我们考虑另一个例子
for(i=0;i<n*10;i++){//has Complexity O(n)
for(i=0;其复杂性应与前面的循环相同。O(n)而不是O(n^2)据我所知,您的第一个语句是O(n),除非循环中发生了其他O(n)…根据我的说法,这两个循环的复杂性将是相同的,它将是O(n)而不是O(n^2)我已经纠正了它,抱歉弄错了。复杂性应该和前面的循环相同。O(n)不是O(n^2)据我所知,你的第一个语句是O(n),除非循环中发生了其他的O(n)…根据我的观点,这两个循环的复杂性将是相同的,它将是O(n)而不是O(n^2)。我已经纠正了它,抱歉弄错了