public class Array {
public static void sort(int[] list) {
int min;
int temp;
for(int i = 0; i < list.length - 1; i++) {
min = i;
for(int j = i + 1; j < list.length; j++) {
if(list[j] < list[min]){
min = j;
}
}
temp = list[min];
list[min] = list[i];
list[i] = temp;
}
}
public static void main(String[] args) {
int a[] = {2,1,3};
sort(a);
for(int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
我理解这个程序中的所有内容,直到我明白:
temp = list[min];
list[min] = list[i];
list[i] = temp;
有人可以简单地解释一下吗?换句话说,上面的目的是什么?
最佳答案
让我们分解一下:
for(int i = 0; i < list.length - 1; i++) {
min = i;
for(int j = i + 1; j < list.length; j++) {
if(list[j] < list[min]){
min = j;
}
}
temp = list[min];
list[min] = list[i];
list[i] = temp;
}
使用变量 i
的第一个循环获取第一个位置的元素。内部循环,使用变量 j
获取第二个元素。
在if条件下if(list[j] < list[min])
您正在比较第一个元素和第二个元素。如果第二个元素小于第一个元素,则代码中 min = j
您获取第二个元素并将其指定为最小值。
当您退出第二个循环时,您的最小值就是列表中具有最低值的元素的位置。然后你在代码中
temp = list[min];
list[min] = list[i];
list[i] = temp;
将列表中的第一个元素替换为现有的最低元素。
现在列表中的第一个元素是列表中的最小值。完成后,您再次进入第一个循环,这一次,您的 i
而不是第一个元素。是第二个元素,你的 j
是你的第三个元素。
这将继续,直到循环完列表中的所有元素为止。
关于java - 选择排序(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34501347/