Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非常简单的排序算法不起作用 公共静态int[]sortArr(int[]a){ 内部温度; for(int i=0;i_Java_Sorting - Fatal编程技术网

Java 非常简单的排序算法不起作用 公共静态int[]sortArr(int[]a){ 内部温度; for(int i=0;i

Java 非常简单的排序算法不起作用 公共静态int[]sortArr(int[]a){ 内部温度; for(int i=0;i,java,sorting,Java,Sorting,Sortar方法只返回给定的数组,我不明白为什么。我已经把它写在纸上了,应该可以用了。有人看到问题了吗?您呼叫了两次findMin,但与第一次呼叫在同一线路上的代码导致第二次呼叫的结果发生变化 你有: public static int[] sortArr(int[] a){ int temp; for(int i = 0; i < a.length; i++){ temp = a[i]; a[i] = a[findMin(a, i)];

Sortar方法只返回给定的数组,我不明白为什么。我已经把它写在纸上了,应该可以用了。有人看到问题了吗?

您呼叫了两次
findMin
,但与第一次呼叫在同一线路上的代码导致第二次呼叫的结果发生变化

你有:

public static int[] sortArr(int[] a){
    int temp;
    for(int i = 0; i < a.length; i++){
        temp = a[i];
        a[i] = a[findMin(a, i)];
        a[findMin(a, i)] = temp;
    }
    return a;
}
public static int findMin(int[] a, int start){
    int min = a[start];
    int minIndex= start;
    for(int i = start; i < a.length; i++){
        if(a[i] < min){
            min = a[i];
            minIndex = i;
        }
    }
    return minIndex;
}
而是使用:

a[i] = a[findMin(a, i)]; // findMin() returns the min, and you'll move that to a[i]
a[findMin(a, i)] = temp; // findMin() returns the new min == i

您调用了两次
findMin
,但是与第一次调用在同一行上的代码导致第二次调用的结果发生变化

你有:

public static int[] sortArr(int[] a){
    int temp;
    for(int i = 0; i < a.length; i++){
        temp = a[i];
        a[i] = a[findMin(a, i)];
        a[findMin(a, i)] = temp;
    }
    return a;
}
public static int findMin(int[] a, int start){
    int min = a[start];
    int minIndex= start;
    for(int i = start; i < a.length; i++){
        if(a[i] < min){
            min = a[i];
            minIndex = i;
        }
    }
    return minIndex;
}
而是使用:

a[i] = a[findMin(a, i)]; // findMin() returns the min, and you'll move that to a[i]
a[findMin(a, i)] = temp; // findMin() returns the new min == i

您在
findMin()
min
minIndex
中返回哪个变量?我刚刚编辑了它,我返回minIndex以查找最小值的位置您在
findMin()
中返回哪个变量,
min
minIndex
?我刚刚编辑了它,我返回minIndex以查找最小值的位置