排序使用的相关工具类与接口

**SortHelper 排序工具类 **

public class SortHelper {


    /**
     * 用于测试算法的效率性
     *
     * @param arraysSort         使用的排序方法对象
     * @param initArraySize      初始化数据量 每循环一次initArraySize=initArraySize*2
     * @param doubleMultipleSize 循环次数
     */
    public static void arraySort(ArraysSort arraysSort, int initArraySize, int doubleMultipleSize) {
        System.out.println(arraysSort.getSortName());
        int temp = initArraySize;
        for (int i = 1; i <= doubleMultipleSize; i++) {
            //初始化数组数据
            int[] ints = generateArrayHelper(temp, 1, temp);

            //进行方法调用
            long startTime = System.currentTimeMillis();
            int[] result = arraysSort.arraySortMethod(ints);
//            Arrays.sort(ints);
            long endTime = System.currentTimeMillis();
            System.out.println(String.format("数组长度[%s] 值范围[%s-%s] 消耗的时间为[%s]毫秒",temp,1,temp,(endTime - startTime)));

            temp = temp * 2;
        }
    }

    /**
     * 快速生成一个指定长度 指定value的数组
     *
     * @param size 长度
     * @param min  最小值
     * @param max  最大值
     */
    public static int[] generateArrayHelper(int size, int min, int max) {
        int[] ints = new int[size];
        Random random = new Random();
        for (int i = 0; i < size; i++) {
            ints[i] = random.nextInt(max - min + 1) + min;
        }
        return ints;
    }

    /**
     * 数组交换方法
     *
     * @param ints   需要交换的数组
     * @param aIndex 交换的a索引
     * @param bIndex 交换的b索引
     */
    public static void swap(int[] ints, int aIndex, int bIndex) {
        int temp = ints[aIndex];
        ints[aIndex] = ints[bIndex];
        ints[bIndex] = temp;
    }
}

ArraysSort 所有基础排序需要实现的接口

/**
 * 数组排序接口类
 */
public interface ArraysSort {

    /**
     * 获取当前排序方法名称
     */
    String getSortName();

    /**
     * 默认升序排序的方法
     *
     * @param ints 排序的数组
     * @return 结果集
     */
    int[] arraySortMethod(int[] ints);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值