我正在尝试测量我的系统使用Selection sort排序一个包含5万个随机数的数组所需的时间,但是我收到了一个错误。我收到的错误是空指针异常。 有人会看看我在哪里错了吗
import java.util.Random;
public class SelectionSort {
public static void main(String[] args) {
int arrayOne[] = null;
int arr[] = { 9, 1, 8, 5, 7, -1, 6, 0, 2, 2718 };
int arr1[] = fillArray(arrayOne);
int sortedArr[] = selectionSort(arr1);
System.out.println("Selection sort implemented below");
System.currentTimeMillis();
long start = System.currentTimeMillis();
print(sortedArr);
long elapsed = System.currentTimeMillis() - start;
System.out.println(elapsed);
}
private static int[] fillArray(int[] array) {
Random generator2 = new Random(System.currentTimeMillis());
for (int x = 0; x < 50000; x++) {
array[x] = generator2.nextInt();
}
return array;
}
private static int[] selectionSort(int[] arr) {
int minIndex, tmp;
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
minIndex = i;
for (int j = i + 1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
if (minIndex != i) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
return arr;
}
private static void print(int[] Array) {
// TODO prints the array
for (int i = 0; i < Array.length; i++)
System.out.print(Array[i] + " ");
System.out.println();
}
}
答案 0 :(得分:0)
当您调用fillArray(arrayOne)时,您将传递null作为参数。然后在fillArray方法中,您尝试将值放入空数组中。
顺便说一下,如果你在调试器中逐行运行代码,你会在几秒钟内发现这个问题。实际上,即使抛出的异常也会告诉你哪条线路确实存在问题。
答案 1 :(得分:0)
您正在尝试填充arrayOne
null
:
int arrayOne[] = null;
在尝试填充之前,您需要以足够的容量对其进行初始化:
int arrayOne[] = new int[50000];