第2章递归与分治策略实验指导.docVIP

  • 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 编程实现以上两个用于排序的分治算法,使用生成的随机数作为测试数据。对每个算法,记录随着测试数据增加算法基本操作执行次数,分

文档评论(0)

1亿VIP精品文档

相关文档