算法导论上机资料报告材料.doc

算法导论上机资料报告材料.doc

ID:56968459

大小:203.74 KB

页数:30页

时间:2020-07-29

算法导论上机资料报告材料.doc_第1页
算法导论上机资料报告材料.doc_第2页
算法导论上机资料报告材料.doc_第3页
算法导论上机资料报告材料.doc_第4页
算法导论上机资料报告材料.doc_第5页
资源描述:

《算法导论上机资料报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算法导论上机报告班级:1313012学号::黄帮振实验编号1题目1归并排序算法实验容描述一个运行时间为θ(nlgn)的算法给定n个整数的集合S和另一个整数x该算法能确定S中是否存在两个其和刚好为x的元素。实验目的用分治思想,设计子问题,实现归并排序算法;报告正文一、算法分析1、运用归并排序算法归并排序运用的是分治思想,时间复杂度为θ(nlgn)能够满足题目要求的运行时间。归并排序的分解部分是每次将数组划分两个部分,时间复杂度为θ(1)再对已经分解的两个部分再进行分解直到将数组分解成单个元素为止。解决部分是递归求解排序子序列,

2、合并部分是将已经排序的子序列进行合并得到所要的答案,时间复杂度为θ(lgn)。2、在已经排好序的基础上,对其运用二分查找二分查找算法的时间复杂度为θ(lgn)在题目要求的围,二分查找的条件为待查的数组为有序序列。算法的主要思想为设定两个数low指向最低元素high指向最高元素,然后比较数组中间的元素与待查元素进行比较。如果待查元素小于中间元素,那么表明查找元素在数组的前半段,反之,如果待查元素大于中间元素,那么表明查找元素在数组的后半段。二、伪代码:MERGE(A,p,q,r)1.n1=q-p+12.n2=r-q3.Let

3、L[1..n1+1]andR[1..n2+1]benewarrays4.Fori=1ton15.L[i]=A[p+i-1]6.Forj=1ton27.R[j]=A[q+j]8.L[n1+1]=无穷9.R[n2+1]=无穷10.I=111.J=112.Fork=ptor13.IfL[i]<=R[j]14.A[k]=L[i]15.I=i+116.ElseA[k]=R[j]17.J=j+1MERGE-SORT(A,p,r)1、ifp

4、,q+1,r)1、MERGE(A,p,q,r)三、实验总结在主函数中调用二分查找的时候,参数应该为BinSearch(a,j+1,n,x-a[j])从j+1开始遍历而不是都是从第一个开始。在程序中由于程序语言规定数组的下标从0开始而算法伪代码要求从1开始,因此在定义数组大小的时候将数字加1,但是在编译运行的时候会得不到想要的结果,出现数组下标访问错误。实验编号1题目2优先队列排序实验容实现优先队列排序算法,需要支持以下操作:INSERT(S,x):把元素x插入到集合S中MAXMUM(S):返回S中具有最大key的元素EXTR

5、ACT-MAX(S):去掉并返回S中的具有最大key的元素INCREASE-KEY(S,x,k):将元素x的关键字值增到k。实验目的堆排序,运用堆来实现优先队列。报告正文一、算法原理1、堆排序算法是引用堆这个数据结构进行信息管理。堆排序的时间复杂度是θ(nlgn),但是与归并排序不同的是堆排序具有空间的原址性,任何时候都只需要常数个额外的元素空间存储临时数据。堆排序算法分为3个过程MAX-HEAPIEY:调整堆以满足小顶堆性质其时间复杂度为θ(lgn);BUILD-MAXHEAP:从无序的输入数据数组中构造小顶堆,其时间复杂

6、度为线性时间;HEAP-SORT:对数组进行原址排序,其时间复杂度为θ(nlgn)。2、在堆的基础上实现优先队列INSERT、MAXMUM、EXTRACT-MAX、INCREASE-KEY时间复杂度为θ(lgn)。二、伪代码BUILD-MAX-HEAP(A)1.A.heap-size=A.length2.Fori=A.length/2(取下限)downto11.MAX-HEAPIFY(A,i)HEAPSORT(A)1.Build-MAX-HEAP(A)2.Fori=A.lengthdownto23.ExchangeA[1]wi

7、thA[i]4.A.heap-size=A.heap-size-15.MAX-HEAPIFY(A,1)HEAP-MAIMUM(A)1.returnA[1]HEAP-EXTRACT-MAX(A)1.ifA.heap-size<12.Error“heapunderflow”3.Max=A[1]4.A[1]=A[A.heap-size]5.A.heap-size=A.heap-size-16.MAX-HEAPIFY(A,1)7.ReturnmaxHEAP-INCREASE-KEY(A,i,key)1.ifkey

8、r“newkeyissmallerthancurrentkey”3.A[i]=key4.Whilei>1andA[PARENT(i)]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。