摘要:
2.3.1按照partition()方法的轨迹的格式给出该方法是如何切分数组E A S Y Q U E S T I O N的。 阅读全文
摘要:
2.2.28自顶向下与自底向上。对于N=10^3、10^4、10^5和10^6,使用SortCompare比较自顶向下和自底向上的归并排序的性能。import java.util.Arrays;public class E2d2d28{ public static double time (Stri 阅读全文
摘要:
2.2.29自然的归并排序。对于N=10^3、10^6和10^9,类型为Long的随机主键数组,根据经验给出自然的归并排序(请见练习2.2.16)所需要的遍数。提示:不需要实现这个排序(甚至不需要生成所有完整的64位主键)也能完成这道练习。 阅读全文
摘要:
2.2.27子数组长度。用归并将大型随机数组排序,根据经验用N(某次归并时两个子数组的长度之和)的函数估计当一个子数组用尽时另一个子数组的平均长度。public class E2d2d27{ private static Comparable[] aux; public static long su 阅读全文
摘要:
2.2.26创建数组。使用SortCompare粗略比较在你的计算机上在merge()中和在sort()中创建aux[]的性能差异。public class E2d2d26d3{ public static double time (String alg,Double[] a) { Stopwatc 阅读全文
摘要:
2.2.25多向归并排序。实现一个k向(相对双向而言)归并排序程序。分析你的算法,估计最佳的k值并通过实验验证猜想。试验50万至5百万个随机double试验后,得出最佳k值为:4~9的数。代码可进一步改进的地方是在k个值中找出最小数的部分,目前采用遍历k个值,第二轮时仍就遍历k个值,没能利用到上一轮 阅读全文
摘要:
2.2.25多向归并排序。实现一个k向(相对双向而言)归并排序程序。分析你的算法,估计最佳的k值并通过实验验证猜想。第一版代码:public class E2d2d25{ private static Comparable[] aux; public static void sort(Compara 阅读全文
摘要:
2.2.25多向归并排序。实现一个k向(相对双向而言)归并排序程序。分析你的算法,估计最佳的k值并通过实验验证猜想。在第一版的基础上为减少检查子数组是否已结束时的对比,做的微小改进。public class E2d2d25d2{ private static Comparable[] aux; pu 阅读全文
摘要:
2.2.24改进的有序测试。在实现中用大型随机数组评估练习2.2.8所做的修改的效果。根据经验用N(被排序的原始数组的大小)的函数描述条件语句(a[mid]<=a[mid+1])成立(无论数组是否有序)的平均次数。约:0.288N。public class E2d2d24{ private stat 阅读全文
摘要:
2.2.23改进。用实验评估正文中所提到的归并排序的三项改进(请见练习2.2.11)的效果,并比较正文中实现的归并和练习2.2.10所实现的归并之间的性能。根据经验给出应该在何时为子数组切换到插入排序。2)比较正文中实现的归并和反向复制辅助数组归并之间的性能(练习2.2.10)public clas 阅读全文