当前位置: 首页 > 知识库问答 >
问题:

如何解决这个整数数组排序不能按预期工作的问题?

淳于涛
2023-03-14

尝试过这样做,但仍然没有按升序排序。此方法的目的是接收一个整数数组,并使用输入整数数组的值创建一个新的整数数组。然后对新创建的数组进行排序。但这种排序方法似乎不起作用。

private static int[] getSortAscend(int[] inputArray) {
    int sortArray[] = inputArray;
    int lngth = sortArray.length;
    
    for(int m = 0; m < lngth; m++) {
        for(int p = m+1; p < lngth; p++) {
            if(sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    
    return sortArray;
}

共有2个答案

况明贤
2023-03-14

设置int sortArray[]=inputArray时 它不会创建一个新数组,只会引用同一个数组。另外,您不需要单独获取数组的长度,只需调用sortArray即可。长度获取长度:

private static int[] getSortAscend(int[] inputArray) {
    int sortArray[] = inputArray.clone();
    for (int m = 0; m < sortArray.length; m++) {
        for (int p = m + 1; p < sortArray.length; p++) {
            if (sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    return sortArray;
}

柴修筠
2023-03-14

这可能是因为你做了int-sortArray[]=inputArray,您的sortArray指向输入的一个,由于您正在修改它,您的算法将无法工作(因为数字将不断变化)。

试试这个:

private static int[] getSortAscend(int[] inputArray) {
    int lngth = sortArray.length;
    int sortArray[] = inputArray.clone();
    
    for(int m = 0; m < lngth; m++) {
        for(int p = m+1; p < lngth; p++) {
            if(sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    
    return sortArray;
}
 类似资料:
  • 问题内容: 为什么以下失败? 什么是正确的测试方法? 问题答案: 对于 Expect ,将比较对象而不是它们的数据,在您的情况下,它是两个不同的数组。 使用以深深的比较值。查看此链接。 或者您可以使用来模拟与。 或者,您可能要检查一下 。 对于 声称 可以使用,链接。

  • 问题内容: 我已经为此奋斗了2天,尽我所能用Google搜索和stackoverflow,但是我无法解决。 我正在构建一个简单的节点应用程序(+ Express + Mongoose),其登录页面重定向到主页。这是我的服务器JS代码: 登录页面向发出POST请求,在此验证发布的数据。这可行。我可以在Node控制台中看到“我们在这里:’/ credentials’”。 然后是问题:res.redir

  • 问题内容: 当使用带点名的名称时,例如:,返回的模块不是,返回的内容几乎都是空的!这里发生了什么? 问题答案: 从python文档上: … 当name变量的形式为package.module时,通常返回顶级包(名称直到第一个点),而不是按名称命名的模块。但是,当给出非空的fromlist参数时,将返回按名称命名的模块。这样做是为了与为不同种类的import语句生成的字节码兼容。使用“ import

  • 问题内容: 根据JavaDoc for ,该函数在比较期间不考虑比例。 现在,我有一个测试用例,看起来像这样: 我希望函数返回的值是10,小数位数为10。打印该值可显示预期的结果。但是该功能似乎并未按照我认为的方式工作。 这里发生了什么? 问题答案: 并 没有 代表0.7。 它代表0.69999999999999999999555910790149937383830547332763671875(

  • 问题内容: 我是否错过了明显痛苦的事情?还是世界上没有人真正使用java.util.BitSet? 以下测试失败: 我真的不清楚,为什么我没有得到长度为2的BitSet和值为10的结果。我偷看了java.util.BitSet的源代码,并且在随意检查时似乎无法对两者进行足够的区分。设置为false且从未设置为任何值… (请注意,在构造函数中显式设置BitSet的大小无效,例如: 问题答案: 人们确

  • 问题内容: 以下Dockerfile: 具有输出: 构建时(docker build命令) 看来RUN cd tmp123没有任何作用 为什么呢? 问题答案: 实际上是预期的。 泊坞窗文件不过是docker run + docker commit的包装器。 与做相同的事情: 每次运行时,都会生成一个新容器,因此pwd为’/’。 如果您愿意,可以在github上打开一个问题,以便向Dockerfil