插入排序错误

时间:2014-02-13 22:45:59

标签: java algorithm insertion-sort

我已经调试了这段代码一段时间了,我根本无法弄清楚它为什么不起作用。这是尝试在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;
}

如果有人可以在这里指出错误,我会非常高兴。提前谢谢!

2 个答案:

答案 0 :(得分:1)

numbers vs resultSet似乎存在问题。如果您将numbers数组作为参数传递给排序函数,则可以工作。

一些建议:

  • 将您的resultSet参数传递给swap函数,以便保持您实际排序的数组的一致性
  • 不要使用类范围的数组进行这种操作(这个可以说是有争议的,取决于你的实际任务)。

答案 1 :(得分:1)

如果你致电resultSort(numbers),它就有效。您的算法按降序排序。这是我的测试代码我做了一些小改动,使它全部静态。我想问题是, resultSort 没有使用参数数字调用。

    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;
    }