我正在创建两个类,分别是秒表和随机数,但我需要创建一个测试程序来测量使用选择排序对100,000个数字进行排序的时间。我知道如何创建选择排序,我只是不知道如何将随机数类与选择排序放在一起,我收到错误消息“不兼容的类型随机数不能转换为int”,我希望有人可以帮助我。
我的随机数类
import java.util.Random;
public class randomnumbers {
Random ran1 = new Random();
private int size;
public randomnumbers(){
size = 100000;
}
public int getSize(){
return size;
}
public void setSize(int newSize){
size = newSize;
}
public int [] createArray(int [] size){
for (int i = 0; i < size.length; i++){
size[i] = ran1.nextInt();
}
return size;
}
public static void printArray (int [] array){
for (int i = 0; i < array.length; i++){
if (i < 0){
System.out.println(array[i] + " ");
}
}
}
}
我的测试程序
public static void main (String [] args){
// Create a StopWatch object
StopWatch timer = new StopWatch();
//create random numbers
randomnumbers numbers = new randomnumbers();
//Create the size of the array
numbers.getSize();
// Invoke the start method in StopWatch class
timer.start();
//sort random numbers
selectionSort();
// Invoke the stop method in StopWatch class
timer.stop();
// Display the execution time
System.out.println("The execution time for sorting 100,000 " +
"numbers using selection sort: " + timer.getElapsedTime() +
" milliseconds");
}
// selectionSort performs a selection sort on an array
public static void selectionSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min = array[i];
int minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < min) {
min = array[j];
minIndex = j;
}
}
if (i != minIndex) {
array[minIndex] = array[i];
array[i] = min;
}
}
}
}
答案 0 :(得分:1)
您究竟从哪里得到“不兼容类型的随机数无法转换为int”错误?
代码有多个问题:
size
字段在randomnumbers
类中,用作构造函数中的实际数组大小,但是在createArray
中,该字段被同名但类型和含义不同的参数所覆盖。selectionSort
中的Main
。这是我在您的代码上出现编译错误的地方。if (i < 0)
条件对于所有ran1.nextInt()数字都是假的,因此它将不打印任何内容。将selectionSort
与numbers.createArray(new int[numbers.getSize()])
一起进行编译,最终对数组进行排序。