首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >断续插入排序

断续插入排序
EN

Stack Overflow用户
提问于 2014-02-13 22:45:59
回答 2查看 85关注 0票数 0

我已经调试这段代码有一段时间了,我根本搞不懂为什么它不能工作。这是在Java中实现顺序插入排序的尝试。

代码语言:javascript
复制
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;
}

如果有人能指出这里的错误,我会很高兴的。提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 23:04:55

您似乎对numbersresultSet有问题。如果将numbers数组作为参数传递给排序函数,它可以工作。

一些建议:

  • resultSet作为参数传递给swap函数,以保持实际排序的一致性
  • 不要在这种操作中使用类作用域数组(这个数组是有争议的,取决于您的实际任务)。
票数 1
EN

Stack Overflow用户

发布于 2014-02-13 23:12:19

如果你打电话给resultSort(numbers),它就能工作。你的算法向下排列。下面是我的测试代码,我做了一些小小的修改,使其完全是静态的。我猜问题是,参数resultSort不是用参数numbers调用的。

代码语言:javascript
复制
    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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21767188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档