上一页 1 2 3 4 5 6 7 8 9 ··· 35 下一页
摘要: 2.3.29随机化。用经验性的研究对比随机选择切分元素和正文所述的一开始就将数组随机化这两处策略的效果。在子数组大小为M时进行切换,将大小为N的不重复数组排序,其中M=10、20和50,N=10^3、10^4、10^5和10^6。答:由于生成的待排序数组本身已是随机化,方式1在排序前打乱一次数组需要 阅读全文
posted @ 2018-10-29 08:27 修电脑的龙生 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 2.3.27忽略小数组。用实验对比以下处理小数组的方法和练习2.3.25的处理方法的效果:在快速排序中直接忽略小数组,仅在快速排序结束后运行一次插入排序。注意:可以通过这些实验估计出电脑的缓存大小,因为当数组大小超出缓存时这种方法的性能可能会下降。public class E2d3d27{ publ 阅读全文
posted @ 2018-10-29 08:26 修电脑的龙生 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 2.3.28递归深度。用经验性的研究估计切换阀值为M的快速排序在将大小为N的不重复数组排序时的平均递归深度,其中M=10、20和50,N=10^3、10^4、10^5和10^6。答:通过测试数据得平均递归深度为2.679lg(N/M)public class E2d3d28{ public stat 阅读全文
posted @ 2018-10-29 08:26 修电脑的龙生 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 2.3.26子数组大小。编写一个程序,在快速排序处理大小为N的数组的过程中,当子数组的大小小于M时,排序方法需要切换为插入排序。将子数组的大小绘制成直方图。用N=10^5,M=10、20和50测试你的程序。M=10时M=20时M=50时import java.awt.Color;public cla 阅读全文
posted @ 2018-10-29 08:25 修电脑的龙生 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 2.3.25切换到插入排序。实现一个快速排序,在子数组元素少于M时切换到插入排序。用快速排序处理大小N分别为10^3、10^4、10^5和10^6的随机数组,根据经验给出使其在你的计算环境中运行速度最快的M值。将M从0变化到30的每个值所得到的平均运行时间绘成曲线。注意:你需要为算法2.2添加一个需 阅读全文
posted @ 2018-10-29 08:24 修电脑的龙生 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 2.3.23Java的排序库函数。在练习2.3.22的代码中使用Tukey's ninther方法来找出切分元素--选择三组,每组三个元素,分别取三组元素的中位数,然后取三个中位数的中位数作为切分元素,且在排序小数组时切换到插入排序。public class E2d3d23{ public stat 阅读全文
posted @ 2018-10-29 08:23 修电脑的龙生 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 2.3.24取样排序。(W.Frazer,A.McKellar)实现一个快速排序,取样大小为2^k-1.首先将取样得到的元素排序,然后在递归函数中使用样品的中位数切分。分为两部分的其余样品元素无需再次排序并可以分别应用于原数组的两个子数组。这种算法被称为取样排序。2.3.24 Samplesort. 阅读全文
posted @ 2018-10-29 08:23 修电脑的龙生 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 2.3.22快速三向切分。(J.Bently,D.McIlroy)用将重复元素放置于子数组两端的方式实现一个信息量最优的排序算法。使用两个索引p和q,使得a[lo..p-1]和a[q+1..hi]的元素都和a[lo]相等。使用另外两个索引i和j,使用a[p..i-1]小于a[lo],a[j+1..q 阅读全文
posted @ 2018-10-27 10:03 修电脑的龙生 阅读(805) 评论(1) 推荐(0) 编辑
摘要: 2.3.21重复元素排序的比较次数下界。完成命题M的证明的第一部分。参考命题I的证明并注意当有k个主键值时所有元素存在N!/f1!f2!...fk!种不同的排列,其中第i个主键值出现的频率为fi(即NPi,按照命题M的记法),且f1+...fk=N。答:命题M。不存在任何基于比较的排序算法能够保证在 阅读全文
posted @ 2018-10-27 10:02 修电脑的龙生 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 2.3.20非递归的快速排序。实现一个非递归的快速排序,使用一个循环来将弹出栈的子数组切分并将结果子数组重新压入栈。注意:先将较大的子数组压入栈,这样就可以保证栈最多只会有lgN个元素。public class E2d3d20{ //一个用记录子数组开始与结束索引的类 private class A 阅读全文
posted @ 2018-10-27 10:00 修电脑的龙生 阅读(263) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 35 下一页