当前位置: 网站首页>小程序开发>网络推广

沧州网络公司哪家好【沧州企业网站百度SEO推广公司】沧州做网站开发价格、沧州淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、沧州高端企业网站页面制作设计专业公司需要多少钱

发表日期: 2021-04-10 16:40:30 浏览次数:136

沧州网络公司哪家好【沧州企业网站百度SEO推广公司】沧州做网站开发价格、沧州淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、沧州高端企业网站页面制作设计专业公司需要多少钱


沧州市,河北省地级市,地处河北省东南部、河北平原东部的黑龙港流域,位于北纬37°29′~38°57′,东经115°42′~117°50′之间。东部滨临渤海,北部与天津、廊坊接壤,西部及西南部与保定、衡水毗邻,南隔漳卫新河与山东省的滨州、德州相望。

沧州市因濒临渤海而得名,市中心北距天津市120千米、北京市240千米,西南距省会石家庄220千米。沧州市辖2个市辖区,4个县级市,10个县及沧州渤海新区、沧州经济开发区、沧州高新技术产业开发区,总面积1.4万平方公里。 [1-3] 

2020年10月,入选河北省第一批新型智慧城市建设试点名单。

因此我们需要T1(n)+T2(n)+T3(n)的上界,从而得出整个程序的运行时间。

因为常数1显然是O(n2),所以可以应用求和规则得出T1(n)+T2(n)是O(n2)。因为nO(n2),就可以对(T1(n)+T2(n))和T3(n)应用求和规则,从而得出T1(n)+T2(n)+T3(n)是O(n2)。也就是说,图3-7所示的整个程序段的运行时间是O(n2)。通俗地讲,就是整个程序几乎将所有的运行时间都花在了第(2)行至第(4)行的循环上,正如我们从以下事实中很容易就能想到的:对于很大的n,矩阵的面积n2要比由n个单元组成的对角线大得多。

示例3.9应用了“低阶项不产生影响”这条规则,因为我们舍弃了1和n这两项比n2次数更低的多项式。不过,求和规则不仅仅能让我们舍弃低阶项。如果有任意多个相同的大O常数项,比如有一列10个赋值语句,每个赋值语句所花的时间都是O(1),那么就可以将这10个O(1)“加起来”,得到O(1)。不那么严格地讲就是,10个常数的和还是个常数。要知道原因,请注意1是O(1),所以10个O(1)中任何一个都可以“被加到”其他任意一个O(1)上,从而得出O(1)这个结果。我们可以不断合并项,直到只剩下O(1)为止。

不过,必须要小心,不要把某个像O(1)这样的“常数”项,与这些随输入大小变化的项弄混了。例如,我们有可能错误地认为,每进行一次图3-7中第(5)行和第(6)行所示的循环,花的时间为O(1),而该循环总共循环了n次,所以第(5)行和第(6)行的总运行时间就是O(1)+O(1)+O(1)+…+(nO(1)),而求和规则告诉我们两个O(1)的和也是O(1),这样,根据归纳法就可以得出结论:任意多个O(1)的和都是O(1)。但是,在这个程序中,n不是常数,它会因输入大小而异。因此,我们没法通过多次应用求和规则推断出nO(1)具有任何特殊的值。当然,如果真要考虑这个问题,那么我们知道nc 的和(其中c 是某个常数)是cn,该函数的大O 形式是O(n),而这就是第(5)行和第(6)行真正的运行时间。

3.5.6 不相称函数

任意两个函数f (n)和g(n)可由大O相比较。也就是说,要么f (n)是O(g(n)),要么g(n)是O(f (n))。或者二者互为对方的大O,因为我们看到过,2n2n2+3n这两个函数就是这种互为大O的关系。这种情况是很不错的。不过不巧的是,也有一些不相称的函数对,它们之间不存在任何大O关系。

示例 3.10

考虑如下函数

也就是,f(1)=1,f(2)=4,f(3)=3,f(4)=16,f(5)=5,等等。类似地,假设有函数

那么f(n)不可能是O(g(n)),因为那些偶数n。因为如我们在3.4节中看到的,n2绝对不是O(n)。类似地,g(n)也不可能是O(f(n)),因为那些奇数n,当n为奇数时,g的值比f 的值增长得更快。

3.5.7 习题

1. 证明如下命题。

(a) 如果ab,那么naO(nb)。

(b) 如果a>b,那么na不是O(nb)。

(c) 如果1< ab,那么anO(bn)。

(d) 如果1< ba,那么an不是O(bn)。

(e) 对任意a和任意b>1,naO(bn)。

(f) 对任意b和任意a>1,anO(nb)。

(g) 对任意a和任意b>0,(logn)aO(nb)。

(h) 对任意b和任意a>0,na不是O((logn)b)。

2. 证明:f(n)+g(n)是O(max(f(n),g(n)))。

3. 假设T(n)是O(f(n)),且g(n)是某个值不为负的函数。证明:g(n)T(n)是O(g(n)f(n))。

4. 假设S(n)是O(f(n)),且f(n)是O(g(n)),而且这些函数对任意n都不为负值。证明:S(n)T(n)是O(f(n)g(n))。

5. 假设f(n)是O(g(n))。证明:max(f(n),g(n))是O(g(n))。

6. * 证明:如果f1(n)和f2(n)都是某个函数T(n)的紧边界,那么f1(n)和f2(n)互为对方的大O。

7. *证明:对于图3-6所示的函数f(n),log2n不是O(f(n))。

8. 在图3-7所示的程序中,通过先在矩阵中每个位置放上0,然后在对角线上放上1,我们创建了一个单位矩阵。将第(4)行的测试改为询问是否有i=j,如果是,则在A[i][j]中放上1,如果不是,则放上0,这样修改后似乎能更快地完成这一工作。然后我们还可以删除第(5)行和第(6)行。

(a) 写出这一程序。

(b) * 考虑图3-7中的程序以及自己为问题(a)编写的程序。作出示例3.1中那样的简化假设,计算两个程序分别耗费了多少个时间单位。哪个程序更快?用不同大小的二维数组运行这两个程序,并绘制它们的运行时间曲线。

3.6 分析程序的运行时间

掌握了大O的概念,以及3.4节和3.5节中介绍的那些处理大O表达式的规则之后,我们将要学习如何获得常见程序运行时间的大O上界。只要有可能,我们将只考虑那些不含函数调用(除了诸如printf那样的库函数)的程序,将含有函数调用的问题留待3.8节及以后的内容中介绍。

我们不指望能够分析任意程序,因为有关运行时间的问题可能是非常难的数学问题。另一方面,只要了解一些简单的规则,我们就能够计算出实践中遇到的多数程序的运行时间。

3.6.1 简单语句的运行时间

这里要求读者接受这样一个原则,即某些对数据的简单操作可以在O(1)时间内完成,也就是说,这个时间是和输入大小无关的。C语言中的这些基本操作包括:

1. 算术运算(比如+%);

2. 逻辑运算(比如&&);

3. 比较运算(比如<=);

4. 结构体存取操作(比如A[i]这样的数组索引,或者跟在指针后的->运算符);

5. 简单的赋值(比如将某个值复制到某个变量中);

6. 对库函数(比如scanfprintf)的调用。

对这一原则的验证需要对常见计算机的机器指令(初始步骤)进行详细研究。我们很容易看出,之前描述的每种操作都只需要少量机器指令便可完成,通常只需要1条或2条指令。

因此,在C语言中有好几种语句都能在O(1)时间内执行完,也就是说,可以在与输入无关的某个时间段内执行完。这些简单语句包括:

1. 表达式中不涉及函数调用的赋值语句;

2. 读语句;

3. 不需要调用函数确定参数值的写语句;

4. 跳转语句breakcontinuegotoreturn表达式,其中表达式不含函数调用。

在第(1)到第(3)条中,这些语句都是由有限数量的基本操作构成的,每个操作花的时间都是O(1)。由求和规则可知,整个语句花的时间是O(1)。当然,语句对应的时间常数要比单个操作对应的常数大,不过我们已经知道,无论如何也不能将具体的常数与C语言语句的运行时间关联起来。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

沧州网络公司哪家好沧州企业网站百度SEO推广公司沧州做网站开发价格、沧州淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、沧州高端企业网站页面制作设计专业公司需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878