java - 创建随机数组以便对排序算法进行计时

标签 java arrays sorting

我看到一篇文章,其中他们对经典排序算法进行计时,以查看哪个算法最快以及快了多少。我想复制这个过程。我认为我的所有排序算法都是正确的,但我在创建随机数组时遇到问题。

这是我的主要方法,它调用另一个类并向它们发送随机数组。

public class Timer {

public static void main(String[] args) {
    int[] numArray;
    InsertionSort insert = new InsertionSort();
    MergeSort merge = new MergeSort();
    QuickSort quick = new QuickSort();
    SelectionSort select = new SelectionSort();
    BubbleSort bubble = new BubbleSort();
    int sizeNumber = 0;
    Scanner scanner;
    scanner = new Scanner(System.in);
    System.out.println("Enter size of arrayList to be sorted: ");
    sizeNumber = scanner.nextInt();
    scanner.close();
    numArray = new int[sizeNumber];
    arraySize(sizeNumber, numArray);
    insert.sort(numArray);
    merge.sort(numArray);
    quick.sort(numArray);
    select.sort(numArray);
    bubble.sort(numArray);

}

public static int[] arraySize(int number, int[] array) {

    Random rng = new Random();

    array = new int[number];
    for (int i = 0; i < array.length; i++) {
        int random = rng.nextInt();
        array[i] = random;

    }
    return array;
}

}

为了清楚起见,我询问如何创建一个 int[] 数组并用用户选择的长度的随机数填充它。目前,我使用的方法返回类似于 [I@9931f5 的值。而不是任何数字。

最佳答案

array[i] = array[random];

这不是你想要的。 random 可以是任何合法的 int 值,因此您可能会超出范围。我相信你会想要

array[i] = random;

相反。

您还在其中分配了一个不必要的数组(new int[...] 就在 arraySize 中覆盖它之前),并且您实际上并不需要从 arraySize 返回一个值(尽管使用返回值而不是输出参数会更清晰)。

关于java - 创建随机数组以便对排序算法进行计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912616/

相关文章:

java - 如何创建一个模态 Activity ,在完成()后在后台 Activity 上引发代码?

javascript - 根据给定值查找嵌套数组

c - 如何在不使用递归的情况下平衡二叉搜索树与数组?

c++ - 如何对巨大的文本文件中的整数进行排序?

java - 插入排序,4 维数组 Java

java - Spring @Transactional 在类上与在方法上

java - 如何在准备好的语句中包含 Oracle SQL 所需的单引号

java - 在java中如何将一个整数按数字分割并放入一个列表中?

php - 按列对查询结果数据进行分组,并为每组中所有缺失的列设置默认值

SQL ORDER BY DECODE 是将数字作为字符串排序吗?