首页 > 其他 > 详细

Algs4-1.1.39随机匹配

时间:2018-10-25 11:35:13      阅读:146      评论:0      收藏:0      [点我收藏+]

1.1.39随机匹配。编写一个使用BinarySearch的程序,它从命令行接受一个整型参数T,并会分别针对N=10^3、10^4、10^5和10^6将以下实验运行T遍:生成两个大小为N的随机6位正整数数组并找出同时存在于两个数组中的整数的数量。打印一个表格,对于每个N,给出T次实验中该数量的平均值。
解:
技术分享图片
import java.util.Arrays;
public class Test
{
    public static void main(String[] args)
    {
        int T=Integer.parseInt(args[0]);
        int repeatTime;
        int[] a;
        int[] b;
        for (int N=1000;N<=1000000;N=N*10)
        {
            repeatTime=0;
            a=new int[N];
            b=new int[N];
            for (int i=0;i<T;i++)
            {
                //generate array;
                for (int j=0;j<N;j++)
                {
                    a[j]=StdRandom.uniform(100000,1000000);
                    b[j]=StdRandom.uniform(100000,1000000);
                }
                //seach repeart
                Arrays.sort(b);
                for(int k=0;k<N;k++)
                    if(rank(a[k],b)>-1) repeatTime++;
            }//end for T
            StdOut.printf("T=%3d,N=%7d,AverageRepeartTime=%.2f\n",T,N,1.0*repeatTime/T);
        }//end for N
    }//end main
   
      public static int rank(int key,int[]a)
    {
        int lo=0;
        int hi=a.length-1;
        while (lo<=hi)
        {
            int mid=lo+(hi-lo)/2;
            if (key<a[mid]) hi=mid-1;
            else if(key>a[mid]) lo=mid+1;
            else return mid;
          }
        return -1;
     }//end BinarySearch Rank
}//end class Test

Algs4-1.1.39随机匹配

原文:https://www.cnblogs.com/longjin2018/p/9848777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!