图中3道java题的时间复杂度是多少?

Python017

图中3道java题的时间复杂度是多少?,第1张

第一道题,那循环显然是执行n次的,所以时间复杂度是o(n)。

这道题假设n存在,循环次数为k,那么s=1+2+3+……+k=k(k+1)/2<n,k~n^(1/2),所以时间复杂度是o(根号下n)。

第三题判断n是不是素数,最差的情况循环是从2到根号下n,所以时间复杂度是o(根号下n)。

for(int p=0p<n*np++)

    for(int q=0q<pq++)

        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)

对于许多编程开发程序员来说,组织开发架构等技术应该都掌握了不少了,那么大家是否懂得算法相关的技术呢?今天,宁夏电脑培训http://www.kmbdqn.cn/就一起来了解一下,程序员为什么要学习算法以及应用领域的问题。

学习算法的重要性在介绍具体算法之前,我先谈一下个人对学习算法的初心。

我的初心无非有两点:一,BAT等互联网公司招聘面试时要问算法知识,如果想要进入互联网公司,我就必须学好算法二,通过学习算法提升个人开发的基本功,这样一来,对于不同场景我就可以正确选择对应的数据结构和算法,使得程序更健壮,提高程序的运行效率。

应用领域目前计算机各个细分领域涉及到不同的算法。

比如说搜索引擎,平时我们使用google、百度等浏览器,只要我们输入一个关键字,浏览器就会快速地返回相关的集合,这个集合的背后就隐藏着许多算法。

如果没有这些算法,我们是不可能这么快速地得到想要的结果。

再比如说人工智能,通过计算模型算法实现人体识别、语音识别等各应用场景。

算法分析上文我们已经介绍到算法就是解决问题的方法,而对于同一个问题,可能存在不同的解决方法。

因此,为了衡量一个算法的优劣,提出了时间复杂度与空间复杂度这两个概念。

时间复杂度一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记为T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。

空间复杂度空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。

一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。