2014-02-13 40 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

是的,我也转载了这样的代码,它的工作原理!所以作者应该提供一个数组,在这种情况下它不起作用。 –