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;
关于java - 非常简单的排序算法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141938/