这个问题在这里已经有答案了:
大o,你是怎么计算/近似的(23个答案)三天前关门了。我想知道这个算法的复杂度,我在符号上有点困惑。
for(int i=0; i<N; ++i) for(int j=M-1; j>=i; --j) ++x
答案是:O(min(N,M)) O(N*M) O(N+M) O(max(N,M))
O(N*M)
O(max(N,M))
new9mtju1#
简而言之:o(nm)说明:首先,不管发生什么,外循环都要执行n次。内循环在第一次迭代中将执行m次,在第二次迭代中将执行m-1次,依此类推。这是一个算术级数,其和为d(a1+an)/2,即1(m+1)/2,即o(m)。把o(n)和o(m)相乘得到o(n*m)。
1条答案
按热度按时间new9mtju1#
简而言之:o(nm)
说明:首先,不管发生什么,外循环都要执行n次。内循环在第一次迭代中将执行m次,在第二次迭代中将执行m-1次,依此类推。这是一个算术级数,其和为d(a1+an)/2,即1(m+1)/2,即o(m)。把o(n)和o(m)相乘得到o(n*m)。