Algs4-2.1.33分布图

 2.1.33分布图。对于你为练习2.1.33给出的测试用例,在一个无穷循环中调用sort()方法将由第三个命令行参数指定大小的数组排序,记录每次排序的用时并使用StdDraw在图上画出所有平均运行时间,应该能够得到一张运行时间的分布图。
1)插入排序1000个元素
图片
2)插入排序10000个元素
图片
3)选择排序1000个元素
图片
4)选择排序10000个元素
图片
5)希尔排序1000个元素
图片
6)希尔排序10000个元素
图片
7)希尔排序100000个元素
图片
public class E2d1d33
{
  
    public static double time (String alg,Double[] a)
    {
        Stopwatch timer =new Stopwatch();
        if(alg.equals("Insertion")) Insertion.sort(a);
        if(alg.equals("Selection")) Selection.sort(a);
        if(alg.equals("Shell")) Shell.sort(a);
      // if(alg.equals("Merge")) Merge.sort(a);
      //  if(alg.equals("Quick")) Quick.sort(a);
      //  if(alg.equals("Heap")) Heap.sort(a);
        return timer.elapsedTime();
    }
   
    public static double timeRandomInput(String alg,int N,int T)
    {
        double total =0.0;
        Double[] a=new Double[N];
        for (int t=0;t<T;t++)
        {
            for (int i=0;i<N;i++)
                a[i]=StdRandom.uniform();
            total+=time(alg,a);
        }
        return total;
    }//end timeRandomInput


   
    public static void main(String[] args)
    {
        String alg=args[0];
        Integer N=Integer.parseInt(args[1]);
        Integer T=0;
        double timeTotal=0;
        //
        StdDraw.setXscale(0.0,1000);
        StdDraw.setYscale(0.0,20);
        StdDraw.setPenColor(StdDraw.RED);
        StdDraw.setPenRadius(0.005);
        //
        while (true)
        {
         T++;
         timeTotal =timeTotal+timeRandomInput(alg,N,1);
         StdDraw.point(T*1.0,timeTotal/T);
        }
    }
}

posted @ 2018-10-27 08:59  修电脑的龙生  阅读(179)  评论(0编辑  收藏  举报