2013-10-30 41 views
0

我想測量我的系統使用選擇排序的5萬個隨機數組的排序所需的時間,但是我收到錯誤。我收到的錯誤是空指向異常。 會有人看,我錯了這裏選擇排序Java,一個小錯誤,但似乎無法弄清楚

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

你試圖填補arrayOne這是null

int arrayOne[] = null; 

你需要有足夠的能力來初始化它試圖以填補前:

int arrayOne[] = new int[50000]; 
0

那裏當你調用fillArray(arrayOne)要傳遞null作爲參數。然後在fillArray方法中,您試圖將值放入空數組中。順便說一句,如果你已經在調試器中逐行運行代碼,那麼你會在幾秒鐘內發現這個問題。事實上,即使拋出的異常也會告訴你究竟哪一行有問題。

相關問題