我看到一篇文章,其中他们对经典排序算法进行计时,以查看哪个算法最快以及快了多少。我想复制这个过程。我认为我的所有排序算法都是正确的,但我在创建随机数组时遇到问题。
这是我的主要方法,它调用另一个类并向它们发送随机数组。
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/