Java中如何随机选择方法

Java中如何随机选择方法,java,random,methods,class-method,Java,Random,Methods,Class Method,我在一个类中有几个排序和搜索方法 public static void MetodoBurbuja(int[] A) { int i, j, aux; for (i = 0; i < A.length - 1; i++) { for (j = 0; j < A.length - i - 1; j++) { if (A[j + 1] < A[j]) { aux = A[j + 1];

我在一个类中有几个排序和搜索方法

public static void MetodoBurbuja(int[] A) {
    int i, j, aux;

    for (i = 0; i < A.length - 1; i++) {
        for (j = 0; j < A.length - i - 1; j++) {
            if (A[j + 1] < A[j]) {
                aux = A[j + 1];
                A[j + 1] = A[j];
                A[j] = aux;
            }
        }
    }
}

public static void MetodoBurbujaOptimizada(int vector[]) {
    int aux, i, j;
    for (i = 0; i < vector.length; i++) {
        for (j = 0; j < i; j++) {
            if (vector[i] < vector[j]) {
                aux = vector[j];
                vector[j] = vector[i];
                vector[i] = aux;
            }
        }
    }
}
MetodoBurbuja公共静态空间(int[]A){
int i,j,aux;
对于(i=0;i
并使用变量metbu从主类调用它们

public static void main(String[] args) throws IOException {
    
    //llamamos al metodo burbuja
    metodoburbuja2 metbu = new metodoburbuja2();

    for(int i = 0; i < ejec; i++){
    
        int [] inputTenThousand = new int [500000];
        int n = inputTenThousand.length;
        for (int a = 0; a < inputTenThousand.length; a++){
        
            inputTenThousand [a] = (int) (Math.random() * 500000);
            
        }
        
        long time_start, time_end;
        time_start = System.nanoTime(); 

       metbu.MetodoBurbujaOptimizada(inputTenThousand);

        time_end = System.nanoTime();
        
        nanosec = time_end - time_start;
        milsec = nanosec * 0.000001;
        System.out.print(milsec + " ");

    }
    
publicstaticvoidmain(字符串[]args)引发IOException{
//利亚马莫斯·艾尔梅托杜布贾
metodoburbuja2 metbu=新的metodoburbuja2();
对于(int i=0;i
你怎么能让所有这些方法中的一种被随机选择呢


如果您有任何批评、帮助或建议,我将不胜感激,因为您没有想法

您可以使用另一个Math.random()语句,使用if语句在这两种方法之间随机选择

因此,与单独通话不同:

metbu.MetodoBurbujaOptimizada(inputTenThousand);
尝试使用以下方法:

if(Math.random() > 0.5){
    System.out.println("Using MetodoBurbuja");
    metbu.MetodoBurbuja(inputTenThousand);
}
else{
    System.out.println("Using MetodoBurbujaOptimizada");
    metbu.MetodoBurbujaOptimizada(inputTenThousand);
}
希望我能正确地解释你的问题


至于其他指针,您可以使用System.currentTimeMillis()而不是纳秒,并且不必将它们转换为毫秒。

您可以尝试的一件事是生成一个介于1和要在for循环中运行的算法数之间的随机数,然后在“switch”语句中使用该数:

package com.company;

import java.util.Random;

public class Main {
    private Random randomGenerator = new Random();
    
    public static void main(String[] args) {
        // this code would go inside your for-loop:
        int randNumber = randomGenerator.nextInt(10);
        switch(randNumber) {
            case 1:
                // call method "a" here
                break;
            case 2:
                // call method "b" here
                break;
            // and so forth
            default:
                break;
        }
    }
}

运行:……0.231499999999998使用MetodoBurbuja 0.3705使用MetodoBurbujaOptimizada 0.233299999999998使用MetodoBurbujaOptimizada 0.2258使用MetodoBurbuja 0.3697构建成功(总时间:0秒)使用这两种方法,您能只选择其中一种吗?(我在method类中不仅有2个方法,它们类似于10个排序和搜索方法)我不知道如何让其中的一个随机选择…@estenosodor它运行了多次,因为你在整个程序中有一个大的for循环。删除它,它将只运行一次。至于在许多不同的函数之间进行选择,你可以从Math.random()中设置结果添加一个变量并检查间隔,或者像其他答案使用的那样使用case语句。int randNumber=this.randomGenerator.nextInt(10);这行代码将我标记为错误是-我编辑了答案以删除
this