2014-02-13 43 views
0

我一直在調試這段代碼一段時間,現在我根本找不到爲什麼它不起作用。這是嘗試在Java中實現順序插入排序。殘破的插入排序

public void resultSort(int[] resultSet){ 
    int j; 
    for(int i = 0; i < resultSet.length; i++){ 
     j = i; 
     while(j > 0 && resultSet[j-1] < resultSet[j]){ 
      swap(j, j-1); 
      j = j-1; 
     } 
    } 
} 

public void swap(int index1, int index2){ 
    int sw = numbers[index1]; 
    numbers[index1] = numbers[index2]; 
    numbers[index2] = sw; 
} 

如果有人能指出這裏的錯誤,我會很高興。提前致謝!

+4

誰的'數字'和誰的'resultSet'? – webuster

+0

@webuster數字是在類作用域中聲明的n長度int數組。 resultSet是一個較短的int數組(參數resultSort方法)。 –

+0

您的代碼適合我。你是否將'numbers []'傳遞給你的函數? – jrowe08

回答

1

您似乎遇到了numbersresultSet有關的問題。如果您將numbers陣列作爲參數傳遞給您的排序功能,那麼可以工作

幾點建議:

  • 傳遞你resultSet作爲參數傳遞給你的swap功能,從而保持一致性上排列你實際使用類範圍的陣列來那種排序
  • 近三成操作(這個人是值得商榷的,取決於你的實際任務)
1

如果你打電話resultSort(numbers)它的工作原理。您的算法按降序排序。這裏是我的測試代碼,我做了一些小的更改,使其全部爲靜態。我想問題是,結果排序不叫與參數號碼

static int numbers[] = new int[]{34, 24, 56, 12, 45, 2, 53, 758}; 

    public static void main(String[] args) { 
     resultSort(numbers); 
     for (int i : numbers) { 
      System.out.println(i + " "); 
     } 
    } 

    public static void resultSort(int[] resultSet) { 
     int j; 
     for (int i = 0; i < resultSet.length; i++) { 
      j = i; 
      while (j > 0 && resultSet[j - 1] < resultSet[j]) { 
       swap(j, j - 1); 
       j = j - 1; 
      } 
     } 
    } 

    public static void swap(int index1, int index2) { 
     int sw = numbers[index1]; 
     numbers[index1] = numbers[index2]; 
     numbers[index2] = sw; 
    } 
+0

是的,我也轉載了這樣的代碼,它的工作原理!所以作者應該提供一個數組,在這種情況下它不起作用。 –