zoukankan      html  css  js  c++  java
  • Algs4-2.1.26原始数据类型

    2.1.26原始数据类型。编写一个能够处理int值的插入排序的新版本,比较它和正文中所给出的实现(能够隐式地用自动装箱和拆箱转换Integer值并排序)的性能。
    答:原始数据类型相对对象类型约有15%以上的性能提升。
    图片
    public class Insertion
    {
        public static void sort(Comparable[] a)
        {
            int N=a.length;
            for (int i=0;i<N;i++)
            {
                for(int j=i;j>0 && less(a[j],a[j-1]);j--)
                    exch(a,j,j-1);
            }
        }
       
        private static boolean less(Comparable v,Comparable w)
        { return v.compareTo(w)<0;}
       
        private static void exch(Comparable[] a,int i,int j)
        {
            Comparable t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
       
        private static void show(Comparable[] a)
        {
            for (int i=0;i<a.length;i++)
                StdOut.print(a[i]+" ");
            StdOut.println();
        }
       
        public static boolean isSorted(Comparable[] a)
        {
            for (int i=0;i<a.length;i++)
                if(less(a[i],a[i-1])) return false;
            return true;
        }
       
         public static void main(String[] args)
        {
            int N=Integer.parseInt(args[0]);
            Double[] a=new Double[N];
            for(int i=0;i<N;i++)
                a[i]=StdRandom.uniform(0.0,N*1.0);
            //
            sort(a);
        }
    }


    public class Insertion4
    {
        public static void sort(int[] a)
        {
            int N=a.length;
            for (int i=0;i<N;i++)
            {
                for(int j=i;j>0 && less(a[j],a[j-1]);j--)
                    exch(a,j,j-1);
            }
        }
       
        private static boolean less(int v,int w)
        { return v<w;}
       
        private static void exch(int[] a,int i,int j)
        {
            int t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
       
        private static void show(int[] a)
        {
            for (int i=0;i<a.length;i++)
                StdOut.print(a[i]+" ");
            StdOut.println();
        }
       
        public static boolean isSorted(int[] a)
        {
            for (int i=0;i<a.length;i++)
                if(less(a[i],a[i-1])) return false;
            return true;
        }
       
         public static void main(String[] args)
        {
            int N=Integer.parseInt(args[0]);
            int[] a=new int[N];
            for(int i=0;i<N;i++)
                a[i]=StdRandom.uniform(0,N);
            //
            sort(a);
            for(int i=0;i<N;i++)
                StdOut.printf("%3d",a[i]);
        }
    }

    public class SortCompare
    {
        public static double time (String alg,Double[] a)
        {
            Stopwatch timer =new Stopwatch();
            if(alg.equals("Insertion")) Insertion.sort(a);
            //exercise2.1.24
            if(alg.equals("Insertion2")) Insertion2.sort(a);
            //exercise2.1.25
            if(alg.equals("Insertion3")) Insertion3.sort(a);
            //exercise2.1.26
            if(alg.equals("Insertion4")) Insertion3.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 alg1=args[0];
            String alg2=args[1];
            int N=Integer.parseInt(args[2]);
            int T=Integer.parseInt(args[3]);
            double t1=timeRandomInput(alg1,N,T);
            double t2=timeRandomInput(alg2,N,T);
            StdOut.printf("For %d random Doubles %s is",N,alg1);
            StdOut.printf(" %.2f times faster than %s ",t2/t1,alg2);
        }
       
    }

  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9860048.html
Copyright © 2011-2022 走看看