《算法设计和分析基础(第3版)》部分习题答案.docx

《算法设计和分析基础(第3版)》部分习题答案.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业一学号:______ 姓名:________P1352. a. 为一个分治算法编写伪代码,该算法同时求出一个元素数组的最大元素和最小元素的值。解:算法:EXTREMUM(A[],EXTREMUM_MAX,EXTREMUM_MIN) //递归调用EXTREMUM函数来找出数组A[]的最大元素和最小元素。//输入:数值数组A[] //输出:最大值EXTREMUM_MAX和最小值EXTREMUM_MINif()//只有一个元素 EXTREMUM_MAXA[];EXTREMUM_MINA[]; else if //有两个元素if EXTREMUM_MAX;EXTREMUM_MIN; else EXTREMUM_MAX;EXTREMUM_MIN; else EXTREMUM(,EXTREMUM_MAX_01, EXTREMUM_MIN_01);EXTREMUM(,EXTREMUM_MAX_02, EXTREMUM_MIN_02); if EXTREMUM_MAX_01 EXTREMUM_MAX_02 EXTREMUM_MAX = EXTREMUM_MAX_02; If EXTREMUM_MIN_02 EXTREMUM_MIN_01EXTREMUM_MIN = EXTREMUM_MIN_02;b. 假设,为该算法的键值比较次数建立递推关系式并求解。解:将该算法与解决同样问题的蛮力法做一个比较蛮力法时间时间复杂度为2n-2,分治算法的为3n/2-2,虽然都属于Θ(n)级别,但是分治算法速度要比蛮力算法快。5.1.3为一个分治算法编写伪代码,该算法用来计算指数函数an的值,其中a0, n是一个正整数。//该算法使用分治法来计算anPow(a,n)If n = 1return aelsep←pow(a,n/2);If n mod 2 = 1return p*p*a;else return p*p;建立该算法执行的乘法次数的递推关系式并求解将该算法与解决同样问题的蛮力法做一个比较蛮力法时间复杂度为n,分治法为,分治法速度明显要高于蛮力法。5.23.举例说明快速排序不是一个稳定的排序算法解:从小到大的快速排序:问题中给出的数据为从大到小,每次选择第一个数作中间值。例:数据9,7,6,7,10,7,7,3,2,1,当选择第一个数我中间操作数时,9和第 4个7交换,元素7的稳定性就乱了。6.411.任选一种语言实现三种高级排序算法——合并排序,快速排序和堆排序,然后针对规模为的数组研究它们的性能。对于每种规模,再考虑以下三种情况:a.区间内的整数所构成的随机生成文件。b.整数的升序文件。c.整数的降序文件。合并排序:图1.1合并排序算法效率分析:合并排序算法时间复杂度为O(NLogN),运行效率比较高,是一个稳定的排序算法。N=106时,时间也在1s左右。快速排序:图2.1 1000量级图2.2 10000量级图2.3 100000量级图2.4 1000000量级快速排序算法效率分析。对于数据规模n=104,程序能在1S内运行出来,对于n=105程序运行随机数据能在1S内运行出来,如果数据具有一定的顺序,则运行速度大大下降,对于n=106的数据,程序运行不出来。对于快排,平均复杂度为O(NLogN),最坏情况为O(N2)。堆排序。运行结果:堆排序算法复杂度分析对N个元素建堆的时间复杂度为O(N),删除堆顶元素的时间复杂度为O(logN),尽管随着元素的不断删除,堆的调度越来越小,但是总的而言,删除堆所有元素的时间复杂度为O(NlogN)故堆排序的时间复杂度为O(NlogN),空间复杂度为O(1)其实,堆排序是一个非常稳定的算法,最坏和平均情况下的时间复杂度都为O(NlogN)此外,对于堆排序而言,数据的初始顺序对它的复杂度没有影响。不管数组初始时就是有序的还是逆序的,它都会先建堆,变成了堆序的性质。算法\数据规模103104105106堆排序随机:0ms递增:0ms递减:0ms随机:0ms递增:1ms递减:0ms随机:6ms递增:4ms递减:6ms随机:64ms递增:32ms递减:47ms快速排序随机:0ms递增:4ms递减:4ms随机:3ms递增:223ms递减:210ms

您可能关注的文档

文档评论(0)

js1180 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档