上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 35 下一页
摘要: 2.2.14归并有序的队列。编写一个静态方法,将两个有序的队列作为参数,返回一个归并后的有序队列。答:1)队1,队2均为0长队列时返回一个0长队列.2)队1长度大于0,队2为0时返回队1.3)队1长度为0,队2长度大于0时返回队2.4)队1,队2长度均大于0时 4.1)队1,队2分别出列q1Item 阅读全文
posted @ 2018-10-27 09:12 修电脑的龙生 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 2.2.13平均情况的下限。请证明任意基于比较的排序算法的预期比较次数至少为~NlgN(假设输入元素的所有排列的出现概率是均等的)。提示:比较次数至少是比较树的外部路径的长度(根结点到所有叶子结点的路径长度之和),当树平衡时该值最小。答:1)平均比较次数=总的比较次数/排列数2)N个输入元素,排列数 阅读全文
posted @ 2018-10-27 09:11 修电脑的龙生 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 2.2.11改进。实现2.2.2节所述的对归并排序的三项改进:加快小数组的排序速度,检测数组是否已经有序以及通过在递归中交换参数来避免数组复制。答:归并排序的本质是由两部分组成,一是排序,二是归并。1)对小数组的排序均发生在a数组中,如果连续对两个小数组进行排序,那么只可能归并到aux,属于a+a- 阅读全文
posted @ 2018-10-27 09:10 修电脑的龙生 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 2.2.12次线性的额外空间。用大小M将数组分为N/M块(简单起见,设M是N的约数)。实现一个归并方法,使之所需的额外空间减少到max(M,N/M):(i)可以先将一个块看做一个元素,将块的第一个元素作为块的主键,用选择排序将块排序;(ii)遍历数组,将第一块和第二块归并,完成后将第二块和第三块归并 阅读全文
posted @ 2018-10-27 09:10 修电脑的龙生 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 2.2.11改进。实现2.2.2节所述的对归并排序的三项改进:加快小数组的排序速度,检测数组是否已经有序以及通过在递归中交换参数来避免数组复制。public class Merge5{ private static int subArrayLenTrunONInsertionSort=15; pub 阅读全文
posted @ 2018-10-27 09:09 修电脑的龙生 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 2.2.9在库函数中使用aux[]这样的静态数组是不妥当的,因为可能会有多个程序同时使用这个类。实现一个不用静态数组的Merge类,但也不要将aux[]变为merge()的局部变量(请见本节的答疑部分)。提示:可以将辅助数组作为参数传递给递归的sort()方法。import java.util.Ar 阅读全文
posted @ 2018-10-27 09:08 修电脑的龙生 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 2.2.10快速归并。实现一个merge()方法,按降序将a[]的后半部分复制到aux[],然后将其归并回a[]中。这样就可以去掉内循环中检测某半边是否用尽的代码。注意:这样的排序产生的结果是不稳定的(请见2.5.1.8节)。public class Merge2{ private static C 阅读全文
posted @ 2018-10-27 09:08 修电脑的龙生 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 2.2.7证明归并排序的比较次数是单调递增的(即对于N>0,C(N+1)>C(N))。证:由命题F得出数组长度为N时比较次数为C(N)=NlgN,当数组长度为N+1时比较次数为C(N+1)=NlgN,由于N+1>N,所以有lg(N+1)>lg(N),所以有C(N+1)=(N+1)lg(N+1)>Nl 阅读全文
posted @ 2018-10-27 09:07 修电脑的龙生 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 2.2.8假设将算法2.4修改为:只要a[mid]<=a[mid+1]就不调用merge()方法,请证明用归并排序处理一个已经有序的数组所需的比较次数是线性级别的。public static void sort(Comparable[] a,int lo,int hi) { if (hi<=lo) 阅读全文
posted @ 2018-10-27 09:07 修电脑的龙生 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 2.2.5当输入数组的大小N=39时,给出自顶向下和自底向上的归并排序中各次归并子数组的大小及顺序。1)自顶向下归并排序时归并的子数组的开始索引,结束索引,子数组长度如下:0,1,20,2,33,4,20,4,55,6,25,7,38,9,25,9,50,9,1010,11,210,12,313,1 阅读全文
posted @ 2018-10-27 09:06 修电脑的龙生 阅读(509) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 35 下一页