CT13算法设计分析_第1页
CT13算法设计分析_第2页
CT13算法设计分析_第3页
CT13算法设计分析_第4页
CT13算法设计分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法设计与分析,LuChaojun,SJTU,2,LuChaojun,SJTU,2,2,查找问题,问题:在一个列表中查找某个值.defsearch(x,nums):#nums为一数值列表,x是一个数#如果找到,返回x在列表中的位置#否则返回-1Python本身就提供有关的功能:判断:xinnums求位置:nums.index(x),LuChaojun,SJTU,3,LuChaojun,SJTU,3,3,策略一:线性查找,逐个检查列表中的数据.defsearch(x,nums):foriinrange(len(nums):ifnumsi=x:returnireturn1特点:适合无序数据列表不适合大数据量使列表有序后,线性查找算法可略加改进.(How?),LuChaojun,SJTU,4,LuChaojun,SJTU,4,4,策略二:两分查找,猜数游戏:可取的策略?两分查找:每次查看有序列表的中点数据,根据情况接着查找较大一半或较小一半.defsearch(x,nums):low,high=0,len(nums)-1whilelow=high:mid=(low+high)/2ifx=numsmid:returnmidelifxhighx不在nums中elifxhigh:return-1mid=(low+high)/2ifx=numsmidreturnmidelifxnumsmid:returnrecBinSearch(x,nums,low,mid-1)else:returnrecBinSearch(x,nums,mid+1,high)defsearch(x,nums):returnrecBinSearch(x,nums,0,len(nums)-1),LuChaojun,SJTU,10,递归vs迭代,递归算法设计容易易读效率略低迭代算法:用循环设计困难有的问题没有直观的迭代算法效率高,排序问题,给定数据列表,将其数据重新排列,形成一个有序的(递增)列表.回顾:Python列表类型提供了方法.sort()我们要学的是如何实现这个方法,而不是学会用现成的,朴素策略:选择排序,每次从剩下的数据中选择最小值输出.求列表中最小值的算法:参考前面的max算法.defselSort(nums):n=len(nums)forbottominrange(n-1):#求numsbottom.numsn-1间的最小值mp=bottom#初始bottom为迄今最小foriinrange(bottom+1,n):#考虑其他值ifnumsi1:m=n/2nums1,nums2=nums:m,numsm:mergeSort(nums1)mergeSort(nums2)merge(nums1,nums2,nums),排序算法的比较,难度和列表大小n有关.选择排序每次循环:从剩余数据中选择最小值,所需步数为剩余数据的个数总的步数:n+(n-1)+.+1=n(n+1)/2称为n2算法归并排序作分组归并图示,可知每层归并都涉及n步,共有log2n层,故需nlog2n步.称为nlogn算法,可计算性与计算复杂性,问题可划分为:可计算的:存在确定的机械过程,一步一步地解决问题.可计算,而且能有效解决可计算,但难度太大,不能有效解决不可计算的:不存在明确的机械过程来求解该问题.不可解,不可判定,Hanoi塔问题,体现递归威力的经典问题!defmoveTower(n,source,dest,temp):ifn=1:printMovediskfrom,source,to,dest+.else:moveTower(n-1,source,temp,dest)moveTower(1,source,dest,temp)moveTower(n-1,temp,dest,source)难度:需要2n1步!称为指数时间算法属于难解(intractable)问题.根据Hanoi塔的传说:有64个金盘.就算僧侣1秒移动一次,至少也要花2641秒,大约等于5850亿年.,停机问题,能否编一个终止性判定程序HALT?defHALT(prog,data)若prog(data)终止,则输出True;否则输出False.是不可解(unsolvable)问题!若有HALT,则歌德巴赫猜想可以迎刃而解:defgc():n=2whileTrue:if2*n不是两个素数的和,则返回Falsen=n+1然后运行HALT(gc)即可.,停机问题(续),说HALT不存在只能通过严格证明:假设存在HALT(prog,data).则编程序defstrange(p):result=HALT(p,p)ifresult=Fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论