算法 第四版 习题 答案(5)

2018-12-08 18:18

}

dist2 =simulation(dist2,n,SIDES); int cnt=0;

for (int k = 2; k <= 2*SIDES; k++) {

if(Math.abs(dist[k]-dist2[k])>0.0001)

{ Ismatch=true; continue;} else {

cnt++;

} if(cnt==11) { }

StdOut.println(\+n +\+cnt); Print(dist2,SIDES); }

Ismatch=false;

}

public static void Print(double [] a,int SIDES) {

for (int k = 2; k <= 2*SIDES; k++) }

public static void main(String[] args) {

// TODO Auto-generated method stub int SIDES = 6; int N=1000000;

double[] dist = new double[2*SIDES+1]; double[] dist2 = new double[2*SIDES+1]; //准确概率分布

for (int i = 1; i <= SIDES; i++) for (int j = 1; j <= SIDES; j++) dist[i+j] += 1.0;

{

StdOut.print(\+k+\+a[k]+\); if((k-1)%6==0) }

StdOut.println(\);

StdOut.println(\);

}

}

for (int k = 2; k <= 2*SIDES; k++) { }

StdOut.println(\); Print(dist,SIDES);

match(dist,dist2,SIDES,N);

dist[k]/=36;

1.1.36 乱序检查。通过实验检查表1.1.10 中的乱序代码是否能够产生预期的效果。编写一个程序ShuffleTest,接受命令行参数M 和N,将大小为M 的数组打乱N 次且在每次打乱之前都将数组重新初始化为a[i] = i。打印一个M×M 的表格,对于所有的列j,行i 表示的是i 在打乱后落到j 的位置的次数。数组中的所有元素的值都应该接近于N/M。

public class ShuffleTest { public ShuffleTest() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub StdOut.print(\); int M=StdIn.readInt(); StdOut.print(\); int N=StdIn.readInt(); int[] a=new int[M]; int[][] c=new int[N][M]; int[][] b=new int[M][M]; int s=N; while(s>0) { for(int i=0;i

}

} StdOut.println(\); } StdOut.println(\); for(int k=0;k

public static void shuffle(int[] a) { int N = a.length;

for (int i = 0; i < N; i++) {

int r = i+StdRandom.uniform(N-i); // between i and N-1 int temp = a[i]; a[i] = a[r]; a[r] = temp; } }

1.1.37 糟糕的打乱。假设在我们的乱序代码中你选择的是一个0 到N-1 而非i 到N-1 之间的随机整数。证明得到的结果并非均匀地分布在N! 种可能性之间。用上一题中的测试检验这个版本。

public static void shuffleTerrible(int[] a) { int N = a.length; for (int i = 0; i < N; i++) { int r = StdRandom.uniform(N); // between i and N-1 int temp = a[i]; a[i] = a[r]; a[r] = temp; } }

1.1.38 二分查找与暴力查找。根据1.1.10.4 节给出的暴力查找法编写一个程序

BruteForceSearch,在你的计算机上比较它和BinarySearch 处理largeW.txt 和largeT.txt 所需的时间。

import java.util.Arrays;

public class BruteForceSearch {

public BruteForceSearch() { // TODO Auto-generated constructor stub } public static void main(String[] args) { In in = new In(\ int[] whitelist = in.readAllInts(); In in2 = new In(\ int[] key = in2.readAllInts(); // sort the array Arrays.sort(whitelist); // read integer key from standard input; print if not in whitelist for(int i=0;i

1.1.39 随机匹配。编写一个使用BinarySearch 的程序,它从命令行接受一个整型参数

T,并会分别针对N=10、10、10 和10 将以下实验运行T 遍:生成两个大小为N 的随机6 位正整数数组并找出同时存在于两个数组中的整数的数量。打印一个表格,对于每个N,给出T 次实验中该数量 的平均值。

import java.util.Arrays;

public class RandomMatching { public RandomMatching() { // TODO Auto-generated constructor stub } private static int M=1000000;//定义随机数范围6位 public static int[] RandomArray(int N) { int [] a=new int [N]; for(int i=0;i

for(int i=10;i<=1000000;i=i*10)

3456

{

StdOut.print(\+i+\); int[] a=new int[i]; int[] b=new int[i]; int cnt=0;

for(int j=0;j

StdOut.println(\+cnt/T); } } }


算法 第四版 习题 答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一年级上册国防教育教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: