2016-02-01 169 views
-5
public static int[] sortIntegers(int[] array) { 
    int n = array.length; 
    int temp = 0; 

    for (int k = 0; k < n - 2; k++) { 
     //controls how many passes is needed to sort the entire array 
     int test=0; 
     for (int i = 0; i < n - k - 1; i++) { 
      //controls the amount of swaps that is needed for each pass 
      //ascending order 
      if (array[i] > array[i + 1]) 
       //swap array[i] and array[i+1] 
       temp = array[i]; 
      array[i] = array[i + 1]; 
      array[i + 1] = temp; 
      test=3; 
     } 
     if(test==0){ 
      break; 
     } 
    } 
    return array; 
} 

public static void printArray(int[] array){ 
    for(int i=0; i<=array.length-1; i++){ 
     System.out.println("Element " + i + " is " + array[i]); 
    } 
} 

所以我想按升序對數組進行排序,它似乎沒有工作。另外我的課程出於某種原因說創建一個新的sortedIntegers數組,但我不明白爲什麼你會想這樣做,當你可以改變傳遞的數組。我的朋友告訴我,創建一個新的數組是更簡單的方法,但我覺得我不是得到的東西....有人能告訴我這個代碼的問題是什麼?

+1

你不能使用'Collections.sort()'? –

+3

交換'array [i]'和'array [i + 1]'時,缺少大括號('{'和'}')。 –

+2

「我的課程出於某種原因說創建一個新的數組」 - 因爲方法不應該修改它們的參數 –

回答

3

這些行:

  if (array[i] > array[i + 1]) 
       //swap array[i] and array[i+1] 
       temp = array[i]; 
      array[i] = array[i + 1]; 
      array[i + 1] = temp; 

不要交換array[i]array[i+1]。它實際上只是將array[i]分配給temp。隨後的兩行無條件執行。

你需要括號身邊:

  if (array[i] > array[i + 1]) { 
       //swap array[i] and array[i+1] 
       temp = array[i]; 
       array[i] = array[i + 1]; 
       array[i + 1] = temp; 
      } 
0

不要交換 '數組[I]' 和 '排列[I + 1]'。它實際上只是將'array [i]'賦值給temp。隨後的兩行無條件執行。

確保你的代碼是這樣的...把括號放在它們周圍。

if (array[i] > array[i + 1]) { 
    //swap array[i] and array[i+1] 
    temp = array[i]; 
    array[i] = array[i + 1]; 
    array[i + 1] = temp; 
} 
相關問題