3+三+分治算法+习题参考答案

3+三+分治算法+习题参考答案

ID:33491777

大小:141.50 KB

页数:6页

时间:2019-02-26

3+三+分治算法+习题参考答案_第1页
3+三+分治算法+习题参考答案_第2页
3+三+分治算法+习题参考答案_第3页
3+三+分治算法+习题参考答案_第4页
3+三+分治算法+习题参考答案_第5页
资源描述:

《3+三+分治算法+习题参考答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章分治算法习题1、编写程序实现归并算法和快速排序算法参见后附程序2、用长为100、200、300、400、500、600、700、800、900、1000的10个数组的排列来统计这两种算法的时间复杂性。有些同学用的微秒us用s可能需要把上面的长度改为10000,……,100000,都可以大部分的结果是快速排序算法要比归并算法快一些。3、讨论归并排序算法的空间复杂性。解析:归并排序由分解与合并两部分组成,如果用表示归并排序所用的空间。则由MergeSort(low,mid)//将第一子数组排序MergeSort(mid+1,high)//将第二子数组排序Merge(lo

2、w,mid,high)//归并两个已经排序的子数组则递归推导得又由存储数组长度为,则有因此,空间复杂度为。4、说明算法PartSelect的时间复杂性为证明:提示:假定数组中的元素各不相同,且第一次划分时划分元素是第小元素的概率为。因为Partition中的case语句所要求的时间都是,所以,存在常数,使得算法PartSelect的平均时间复杂度可以表示为令取试证明。证明:令表示n个元素的数组A中寻找第k小元素的平均时间复杂度,因的时间复杂度是,故存在常数c,使得算法PartSelect的平均时间复杂度可以表示为令且不妨设等式在时成立,则满足以下用第二数学归纳法证明。取当

3、时,取cC/4,则当时,成立。对于一般的n,设对所有小于n的自然数成立,则得证。证明:(1)当时,假设数组A中元素互不相同。由于每个具有7个元素的数组的中间值u是该数组中的第4小元素,因此数组中至少有4个元素不大于u,个中间值中至少有个不大于这些中间值的中间值v。因此,在数组A中至少有个元素不大于v。换句话说,A中至多有个元素大于v。同理,至多有个元素小于v。这样,以v为划分元素,产生的新数组至多有个元素。当时,。另一方面,在整个执行过程中,递归调用Select函数一次,涉及规模为,而下一次循环Loop涉及的数组规模为。程序中其他执行步的时间复杂度至多是n的倍数,用表示算

4、法在数组长度为n的时间复杂度,则当时,有递归关系用数学归纳法可以证明,。所以时间复杂度是。(2)当时,使用上述方法进行分析,可知在进行划分后数组A中有至多个元素。而递归关系为。若通过归纳法证明出有的形式,用数学归纳法可以证明,。所以时间复杂度是。归并排序的C++语言描述#includetemplatevoidMergeSort(Ta[],intleft,intright);templatevoidMerge(Tc[],Td[],intl,intm,intr);templatevoidCopy(Ta[]

5、,Tb[],intl,intr);voidmain(){intconstn(5);inta[n];cout<<"Input"<>a[i];//for(intj=0;jvoidMergeSort(Ta[],intleft,intright)//

6、{if(leftvoidMerge(Tc[],Td[],intl,intm,intr){inti=l;intj=m+1;intk=l;while((i<=m)&&(j<=r)){if(c[i]<=c[j])d[k++]=c[i++];elsed[k++]=c[j++];}if(i>m){f

7、or(intq=j;q<=r;q++)d[k++]=c[q];}elsefor(intq=i;q<=m;q++)d[k++]=c[q];}templatevoidCopy(Ta[],Tb[],intl,intr){for(inti=l;i<=r;i++)a[i]=b[i];}快速排序的C++语言描述#includetemplatevoidQuickSort(Ta[],intp,intr);templateintPartition(Ta[],intp,int

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

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

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