「时间复杂度java」时间复杂度怎么算
本篇文章给大家谈谈时间复杂度java,以及时间复杂度怎么算对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java在线等时间复杂度,空间复杂度,求大神
1、时间复杂度,一般看循环的次数。reverseArray只有一个for循环,次数为n/2,即时间复杂度为n/2。n为数组的大小。reverseArray2有两个for循环,循环次数为n+n=2n。时间复杂度为2n。
2、空间复杂度,是看程序占用的内存大小。reverseArray只是而外的只有一个变量temp,故空间复杂度为1。reverseArray2需要另外new一个数组出来,所以空间复杂度为n。n为数组大小。
java 计算时间复杂度
for(int p=0;pn*n;p++)
for(int q=0;qp;q++)
sum--;
下面我来简单解释一下为什么是O(n^4)
p的所有取值,以及相对性的sum运算的次数如下
p的取值:0 1 2 3 4 ... (n^2 -1)
sum次数:0 0 1 2 3 ... (n^2 -2)
从上面的式子我们知道sum--执行的次数也就是sum次数的累加和:
0+0+1+2+3+...+(n^-2)=1+2+3+ ... +(n^2 -2)这里我们可以用求和公式,但是需要搞定一个这里有多少项,很明显(n^2 -2)项,带入求和公式如下
=(1+(n^2 -2))*(n^2 -2)/2=(n^2 -1)(n^2 -2)/2=(n^4 -3*n^2 +2)/2
所以答案是O(n^4)
java 时间复杂度问题
第一个:包括两个for循环,问题规模是O(n*(n/2));后面的那个是O(n),两者加起来O(n*(n/2))+O(n)≈O(n*(n/2))≈O(N^2);
第二个:是个while循环,表面看起来也应该是O(n),但由于变量j每次增加一倍,问题规模缩小为原来的一半,知道二分查找么?对,这根那个是一样的效率,都是O(logN)。
如果第一个循环中是这样的:
for (int i = 1; i = n; i++) {
for (int j = 1; j = i; j *= 2) { //这里改为*2;即每次规模是原来的一半
sum += 4;
}
}
那么问题规模就是O(n*(logN))+O(n)≈O(n*(logN))≈O(NlogN);
关于时间复杂度java和时间复杂度怎么算的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-20,除非注明,否则均为
原创文章,转载请注明出处。