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

  • 41
  • 0
  • 约3.61千字
  • 约 6页
  • 2016-04-23 发布于重庆
  • 举报
3三分治算法习题参考答案

第三章 分治算法习题 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(low, mid, high) //归并两个已经排序的子数组 则 递归推导得 又由存储数组长度为 ,则有 因此,空间复杂度为。 4、说明算法PartSelect的时间复杂性为 证明:提示:假定数组中的元素各不相同,且第一次划分时划分元素是第小元素的概率为。因为Partition中的case语句所要求的时间都是,所以,存在常数,使得算法PartSelect的平均时间复杂度可以表示为 令取试证明。 证明:令表示n个元素的数组A中寻找第k小元素的平均时间复杂度,因的时间复杂度是,故存在常数c,使得算法PartSelect的平均时间复杂度可以表示为 令且不妨

文档评论(0)

1亿VIP精品文档

相关文档