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


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

最佳答案

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

你有:

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


而是使用:

int min = findMin(a, i);
a[i] = a[min];
a[min] = temp;

10-07 19:16
查看更多