美文网首页
排序:创建工具类

排序:创建工具类

作者: 微风细雨007 | 来源:发表于2017-12-19 22:00 被阅读9次

需求

  • 生成随机数组
  • 进行数组中的交换
  • 打印数组
  • 测试运行时间
  • 判断数组是否有序

示例

public class SortUtils {
    //不允许实例化
    private SortUtils(){}

    //生成有n个元素的随机数组,每个元素的随机范围为[rangeL, rangeR]
    public static int[] getRandomIntArray(int n,int rangeL,int rangeR){
        assert rangeL <= rangeR;
        int[] arr = new int[n];
        for (int i=0;i<n;i++){
            arr[i] = (int) (Math.random() * (rangeR - rangeL + 1) + rangeL);
        }
        return arr;
    }

    //交换数组里的两个数
    public static void swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    //打印数组
    public static void printArr(int[] arr){
        int length = arr.length;
        for (int i=0;i<length;i++){
            if (i==length-1){
                System.out.println(String.valueOf(arr[i]));
            }else {
                System.out.print(arr[i]+",");
            }
        }
    }



    /**
     * 测试运行时间的通用方法
     * @param className
     * @param methodName
     * @param arr
     */
    public static void runTime(String className,String methodName,int[] arr){
        try {
            Class clazz = Class.forName(className);
            Method method = clazz.getMethod(methodName, int[].class);
            int start = (int) System.currentTimeMillis();
            method.invoke(null, arr);
            int end = (int) System.currentTimeMillis();
            if (isSort(arr)){
                System.out.println("方法"+methodName+"运行时间为:"+(end-start)+"ms");
            }else{
                System.out.println("排序有误");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //判断数组是否有序
    public static boolean isSort(int[] arr){
        int length = arr.length;
        for (int i=0;i<length-1;i++){
            if (arr[i]-arr[i+1]>0){
                return false;
            }
        }
        return true;
    }
}

相关文章

网友评论

      本文标题:排序:创建工具类

      本文链接:https://www.haomeiwen.com/subject/gxtwwxtx.html