从入门开始手把手搭建千万级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的千万级测试平台资源下载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
感谢您的提问!以下是手把手教您搭建属于自己的PyQt5-YOLOv5目标检测平台的保姆级教程: 1. 安装Anaconda 首先,您需要下载并安装Anaconda,Anaconda是一个 Python 数据科学平台,包含了许多常用的数据科学包,如Numpy、Pandas等。 2. 创建一个虚拟环境 在安装了Anaconda之后,您需要创建一个虚拟环境,以便隔离开发环境和系统环境。您可以在命令行中输入以下命令来创建一个名为yolov5的虚拟环境: ``` conda create -n yolov5 python=3.8 ``` 其中,“yolov5”是您的虚拟环境的名称,您可以根据自己的需要进行更改。 3. 激活虚拟环境 创建完虚拟环境之后,您需要激活它,以便在环境中进行开发。在命令行中输入以下命令来激活yolov5环境: ``` conda activate yolov5 ``` 4. 安装PyQt5和YOLOv5 在激活了虚拟环境之后,您需要安装PyQt5和YOLOv5。您可以在命令行中输入以下命令来安装它们: ``` pip install PyQt5 pip install yolov5 ``` 5. 创建PyQt5界面 在安装了PyQt5之后,您可以使用Qt Designer创建一个PyQt5界面。Qt Designer是一个可视化的界面设计工具,可以让您轻松地创建PyQt5界面。 6. 使用YOLOv5进行目标检测 在安装了YOLOv5之后,您可以使用它进行目标检测。您可以在Python脚本中使用以下代码: ```python import torch from yolov5.models.experimental import attempt_load from yolov5.utils.torch_utils import select_device device = select_device('cpu') model = attempt_load('yolov5s.pt', map_location=device) img = torch.zeros((1, 3, 640, 640), device=device) pred = model(img) print(pred) ``` 其中,“yolov5s.pt”是YOLOv5的预训练模型,您可以在YOLOv5的GitHub页面上下载它。 7. 将PyQt5界面与YOLOv5集成 最后,您需要将PyQt5界面与YOLOv5集成起来,以便您可以在界面上使用YOLOv5进行目标检测。您可以在Python脚本中使用以下代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtGui import QPixmap from yolov5.models.experimental import attempt_load from yolov5.utils.torch_utils import select_device class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('PyQt5-YOLOv5目标检测平台') self.setGeometry(100, 100, 800, 600) self.label = QLabel(self) self.label.setGeometry(50, 50, 640, 480) self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec_()) ``` 这段代码创建了一个名为“PyQt5-YOLOv5目标检测平台”的窗口,并在窗口上添加了一个标签。您可以使用这个标签来显示检测到的目标。 以上就是手把手教您搭建属于自己的PyQt5-YOLOv5目标检测平台的保姆级教程。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值