- 30
- 0
- 约2.45千字
- 约 4页
- 2017-06-07 发布于重庆
- 举报
第2章递归与分治策略实验指导
第2章 递归与分治策略
实验2 分治算法的递归程序实现与时间复杂度测试
1. 实验目的
编程实现合并排序和快速排序算法,理解分治算法设计的基本思想、递归程序实现的基本方法,加深对分治算法设计与分析思想的理解。通过程序的执行时间测试结果,与理论上的时间复杂度结论进行对比、分析和验证。
2. 原理解析
分治算法的基本思想
分治算法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。分治算法设计的一般步骤包括:
1 分解,将要解决的问题划分成若干规模较小的同类问题;
2 求解,当子问题划分得足够小时,用较简单的方法解决;
3 合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。
分治法的基本设计范式如下:
DivideAndConquer data,n,solution
if n≤SizeLimit then
DirectSolution data,n,solution
else
DivideInput data,n,smallerSets,smallerSizes,numberSmaller
for i 1 to numberSmaller do
DivideAndConquer smallerSets[i],smallerSizes[i],smallerSolution[i]
end for
CombineSolutions smallerSolution,numberSmaller,solution
end if
测试算法
不同问题的分治算法在分解与合并步骤可能有所不同,例如合并排序和快速排序这两个有代表性的分治算法中,合并排序算法没有分解、只有合并,快速排序算法没有合并、只有分解;这两个算法的计算时间分别取决于合并与分解步骤。这两个算法分别如下:
1、MergeSort list, first, last
if first last then middle first+last /2 MergeSort list, first, middle MergeSort list, middle+1, last MergeLists list, first, middle, middle+1, last
end if
MergeLists list, start1, end1, start2, end2
while start1≤end1 and start2≤end2 do
if list[start1] list[start2] then result[indexC] list[start1] start1 start1+1 else result[indexC] list[start2] start2 start2+1
end if
indexC indexC+1
end while
if start1≤end1 then for i start1 to end1 do result[indexC] list[i] indexC indexC+1 end for
else for i start2 to end2 do result[indexC] list[i] indexC indexC+1 end for
indexC 1
for i finalStart to finalEnd do list[i] result[indexC] indexC indexC+1
end for
2、QuickSort list, first, last
if first last then
pivot PivotList list, first, last QuickSort list, first, pivot-1 QuickSort list, pivot+1, last
end if
PivotList list, first, last
PivotValue list[first]
PivotPoint first
for index first+1 to last do
if list[index] PivotValue then
PivotPoint PivotPoint+1
Swap list[PivotPoint],list[index]
end if
end for
Swap list[first],list[PivotPoint]
return PivotPoint
以上两个算法具有O nlogn 的时间复杂度。
3. 实验内容
1 编程实现以上两个用于排序的分治算法,使用生成的随机数作为测试数据。对每个算法,记录随着测试数据增加算法基本操作执行次数,分
您可能关注的文档
最近下载
- PasswortD A1 听力原文-德语学习资料.pdf VIP
- 贝纳利BJ250维修手册.pdf VIP
- 自动可调螺杆机组触摸屏说明书_SCC60-TP-V2.05.doc VIP
- 学堂在线 雨课堂 学堂云 如何写好科研论文 章节测试答案.docx VIP
- 人教版八年级数学下册基础知识专项讲练 专题17.20 勾股定理(中考真题专练)(巩固篇)(专项练习).docx VIP
- 教育实习鉴定实习内容.docx VIP
- 《GBT11616-2013-同步带传动节距型号MXL、XXL、XL、L、H、XH和XXH同步带尺寸》.pdf
- 离婚协议书(无子女版).docx VIP
- pluronic系列产品指标.pptx VIP
- 03工艺规程stp奥硝唑片0 25g 1.pdf VIP
原创力文档

文档评论(0)