摘要:
1.5.2使用quick-union算法(请见1.5.2.3节代码框)完成练习1.5.1。另外,在处理完输入的每对整数之后画出id[]数组表示的森林。答:public class UF{ private int[] id; private int count; public UF(int N) { 阅读全文
摘要:
1.5.1使用quick-find算法处理序列9-0 3-4 5-8 7-2 2-1 5-7 0-3 4-2。对于输入的每一对整数,给出id[]数组的内容和访问数组的次数。答:public class UF{ private int[] id; private int count; public U 阅读全文
摘要:
public class WeightedQuickUnionUF{ private int[] id; private int[] sz; private int count; public WeightedQuickUnionUF(int N) { count=N; id=new int[N]; 阅读全文
摘要:
public class UF{ private int[] id; private int count; public UF(int N) { count=N; id=new int[N]; for (int i=0;i<N;i++) id[i]=i; } public int count() { 阅读全文
摘要:
public class UF{ private int[] id; private int count; public UF(int N) { count=N; id=new int[N]; for (int i=0;i<N;i++) id[i]=i; } public int count() { 阅读全文
摘要:
1.4.45优惠券收集问题。用和上一题相同的方式生成随机整数。通过实验验证生成所有可能的整数值所需生成的随机数总量为~N HN 。答:HN表示递推关系。通过以下实验结果观察得出Hn接近于一个等差数列。public class E1d4d45{ public static void main(Stri 阅读全文
摘要:
1.4.44生日问题。编写一个程序,从命令行接受一个整数N作为参数并使用StdRandom.uniform()生成一系列0至N-1之间的随机整数。通过实验验证产生第一个重复的随机数之前生成的整数数量为~sqrt(pi*N/2)。答:public class E1d4d44{ public stati 阅读全文
摘要:
1.4.43大小可变的数组与链表。通过实验验证对于栈来说基于大小可变的数组的实现快于基于链表的实现的猜想(请见练习1.4.35和练习1.4.36)。为此实现另一个版本的Doublingratio,计算两个程序的运行时间的比例。答:public class E1d4d43{ public static 阅读全文
摘要:
1.4.42问题规模。设在你的计算机上用TwoSumFast、TwoSum、TreeSumFast以用ThreeSum能够处理的问题的规模为2^pX10^3个整数。使用Doublingratio估计P的最大值。 答: 阅读全文
摘要:
1.4.41运行时间。使用DoublingRation估计在你的计算机上用TwoSumFast、TwoSum、ThreeSumFast以及ThreeSum处理一个含有100万个整数的文件所需的时间。答:设N个数时运行时间为t,倍率为r,那么处理M个数时运行时间为: 1)TwoSumFast倍率实验: 阅读全文