栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

从入门开始手把手搭建千万级Java算法测试-主页面的搭建和自定义测试数组生成类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从入门开始手把手搭建千万级Java算法测试-主页面的搭建和自定义测试数组生成类

  从之前的文章当中,已经讲解了不少算法,其中这十个算法我们从算法思路,到算法伪代码实现,到复杂度分析,在进行学习后,已经拥有了搭建测试平台的基础,其中这个平台可以完你自身硬对算法从1000,到千万级测试,其中算法测试时间与你的机器硬件水平和实现的算法有关系,下面是怎么实现这个平台和自定义测试数组生产类的具体讲解,有了这些基础后添加后续的功能也十分的方便。

下面是平台的具体实现:

package runoob;
import java.util.Scanner;

public class main {
    public static class textSort{
        InsertionSort text=new InsertionSort();//插入排序
        SelectionSort text2=new SelectionSort();//选择排序
        ShellSort text3=new ShellSort();//希尔排序
        MergeSort text4=new MergeSort();//归并排序
        MergeSort text5=new MergeSort();//归并与插入比较(可以上列合并)
        Quick_sort text6=new Quick_sort();//快排+随机化快排
        Power_reckon text7=new Power_reckon();//n的幂指数
        Fibonacci text8=new Fibonacci();//斐波那契额数列的三种实现
        CountSort text9=new CountSort();//计数排序
        RandomSelect text10=new RandomSelect();//随机化查找第k大
        long num;
        int enter;
        public void enternum1(Scanner sc){
            enter=sc.nextInt();
        }
        public void enternum2(Scanner sc) {
            num=sc.nextInt();
        }
        public void CreatSort(){

            if (enter==1)
                text.InsertionSort_text(num);
            else if(enter==2)
                text2.SelectionSort_text(num);
            else if(enter==3)
                text3.ShellSort_text(num);
            else if (enter==4)
                text4.MergeSort_text(num);
            else if (enter==5)
                text5.MergeSort_Incompear(num);
            else if (enter==6)
                text6.Quicksort_text(num);
            else if (enter==7)
                text7.reckon_text(num);
            else if(enter==8)
                text8.Fibonacci_text(num);
            else if(enter==9)
                text9.CountSort_text(num);
            else if(enter==10)
                text10.RoandomSelect_text(num);
        }
    }
    public static void main(String[] args) {
        textSort text=new textSort();
        System.out.println("选择你需要算法"+"n"+"1.插入排序"+"n"+"2.选择排序"+"n"+"3.希尔排序"+"n"+"4.归并排序"+"n"+"5.归并排序与插入比较"+"n"+"6.快速排序与随机快速排序"+"n"+"7.计算X的n次幂的两种方法"+"n"+"8.斐波那契额数列的三种实现方法"+"n"+"9.桶排序与快速排序的比较(常规快排)"+"n"+"10.快速化排序与随机化查找第k个数");
        text.enternum1(new Scanner(System.in));
        System.out.println("请输入参与算法的数量");
        text.enternum2(new Scanner(System.in));
        text.CreatSort();
    }
}

上述的算法具体实现参考往期文章:

InsertionSort插入排序

SelectionSort选择排序

ShellSort希尔排序

MergeSort归并排序

MergeSort归并与插入比较(可以上列合并)

Quick_sort快排+随机化快排

Power_reckonn的幂指数的两种方法

Fibonacci斐波那契额数列的三种实现

CountSor计数排序

RandomSelect随机化查找第k大数

下列是实现的自定义测试数据的生成类,主要用于测试排序端口的数据生成和数据的打印:

  SortHelper类中的方法generateRandomArray的参数分别为,(num,left,right),其中第一个参数参与算法生成的数量级,由用户自行输入,参与算法的随机生成序列,它可以为千万级别,因为在其内部中属long级别,left和right则为生成序列的大小范围,生成的序列为返回值类型为Integer[]。
  SortHelper类中的方法printArray为无参方法,主要是方便打印操作。

package runoob;


import java.util.Scanner;

public class SortHelper {
    // SortTestHelper不允许产生任何实例
    private SortHelper(){}

    // 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, rangeR]
    public static Integer[] generateRandomArray(long n, int rangeL, int rangeR) {

        assert rangeL <= rangeR;

        Integer[] arr = new Integer[Math.toIntExact(n)];

        for (int i = 0; i < n; i++)
            arr[i] = new Integer((int)(Math.random() * (rangeR - rangeL + 1) + rangeL));
        System.out.println("下面为随机生成数列");
        printArray(arr);
        return arr;
    }

    // 打印arr数组的所有内容
    public static void printArray(Object arr[]) {

        for (int i = 0; i < arr.length; i++){
            System.out.print( arr[i] );
            System.out.print( ' ' );
        }
        System.out.println();

        return;
    }

}

下列是运行结果:

  可以直接选择测试的参与数据量的大小,然后根据算法内部的数据范围调整,生成对应的数据放入算法当中进行运行,其中包含测试时间和排序结果。
  下面是资源下载的地方,不想自己搭建的同学可以直接下载
基于Java的千万级测试平台资源下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号