- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
解:0102030405O(n2);O(2n);O(1);O(logn);O(n)。
解答:O()的含义是:令f(n)和g(n)是自然数集到非负实数集1的两个函数,如果存在一个自然数n0和一个常数20,使得?n?n0时f(n)?cg(n),则称f(n)为?(g(n))。3因此,如果limn??f(n)/g(n)存在,那么4limn??f(n)/g(n)??=》f(n)=O(g(n))。5上述O(1)和O(2)在表示同一个函数的时候,只是常数项的不同。6O(1)=O(2).7
解答:从低到高的排列顺寻应该是:2,logn,n2/3,20n,4n2,3n,n!
主要采用思路:在相同时间t内,因为采用的相同复杂度的算法,所以新机器完成问题的时间一定是旧机器完成问题规模的1/64。
设在第二台计算机t秒内为完成的算法的规模是m;故存在T(n)=3*2n=3*2m/64;按照上述解法可以得出:nl2=64n2=nl=8nT(n)=8的含义:该算法完成问题的时间跟算法规模n没有任何关系。所以可以在时间t内解决任何规模的问题。解答:得:m=n+6;
解答:对于相同规模的算法,XYZ公司的运算处理器是ABC公司的100倍,所以针对相同的时间复杂度,存在如下公式成立:m=100n;m2=100n2=m=10nm3=100n3=m=1001/3nm!=100n!=mn+log100=n+6.64(注意:解相同时间复杂度的问题的时间是另外算法的100倍)
习题1-7试确定下面程序段的下界:while(n1)if(odd(n))n=3*n+1elsen=n/2;endwhile//分别按照奇偶数处理操作,但是n随着变化而变化。
解答:循环的终止操作是n1,所以只有执行n/2的操作才能使循环趋向终止,而奇数的操作,会使算法无法终止。观察可以知道,如果n=2k,则算法将趋于终止,按照此假设,当n=2k则,算法中else的执行次数应该是k=logn,而不会再找到能小于此数据的算法中else的执行次数。故认为算法的下界应该是?(logn);n是奇数时无法确定何时终止算法,故上界确定不了。
0102习题1-8优先队列要能实现插入元素和寻找最大值两个操作。故采用有序表:优点是寻找最大值很简单,时间复杂性为O(1);缺点是:插入操作复杂,需要大量数据移动和确定插入位置的搜索。采用有序表实现一个优先队列的优缺点是什么?答:
题1-9:使用常规队列实现优先级队列,insert操作和deletmax运算需要时间是多少?解答;常规队列即普通数组;insert操作时间是:队尾操作是O(1);队头操作时间需要n次数据移动:O(n);deletemax操作:搜索操作时间复杂度是O(n)。队尾:O(1);对头需要移动数据:O(n)。
题1-10:堆的下列元素在什么位置:第二大键值。根节点的子结点。第三大键值。根节点的最大的子结点的子结点或根的子结点。最小键值。叶子结点上。不能确定具体位置。
1习题1-112写一个算法用于检测给定数组A[1..n]是不是一个堆,说明该算法的时间复杂性。3算法:4所谓检测是不是符合堆,即比较A[i]和A[2*i]和A[2*i+1]是不是符合堆的定义。直到i=n/2(下界)结束为止,或是检测到不符合堆定义。
i=1;while(i=n/2){if((A[i]A[2*i])and(A[i]A[2*i+1]))theni++;else{cout非堆;exit(0);}}cout是一个堆;exit(0);复杂度分析:明显是一个线性搜索结构?(n)
习题1-12:证明:假设存在一个堆A[1..n],插入操作只在堆末尾进行,故根据insert的算法可知仅仅需要实现sift-up即可;哪种堆运算代价更大,insert还是delete,证明你的答案。两个的时间复杂度相同均为O(logn)。执行delete(i)操作时,如果i在末尾,则无需任何操作,但是如果i不在末尾,则需要将末尾数据上调至此为止,然后依据数据之间的关心进行sift-down或sift-up,故delete运算代价更大一些。2341
从n个元素的最大堆中找到最小的键值有可能是多快。算法思想:只需要按照堆定义,向小的子结点下移寻找即可。所以最快的应该是沿着树的一支向下移动寻找,树的高度是k,则应该是O(k=logn)。习题1-13:
习题4-15.01有一个整数堆A[1..n],通过不断从A中读取数据,然后向B[1..n]数组插入的方法实现构建堆B,请证明最坏的情况下复杂度是O(nlogn)。02证明:每向B中插入一次数据,则需要
文档评论(0)