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;
有人可以用简单的方式解释这个吗?换句话说,上述目的是什么?
答案 0 :(得分:2)
temp = list[min]; // saves the value of 'list[min]' to the 'temp' variable
list[min] = list[i]; // override the value of 'list[min]' with the value of 'list[i]'
list[i] = temp; // set the value of 'list[i]' to the value of 'list[min]', which is stored in the 'temp' variable
这用于切换list[min]
&amp;的内容。 list[i]
,使用第3个temp
orary变量。
答案 1 :(得分:2)
让我们分解一下:
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
中取第二个元素并将其指定为最小值。
当您退出第二个循环时,min是列表中具有最低值的元素的位置。然后你在代码中
temp = list[min];
list[min] = list[i];
list[i] = temp;
使用您拥有的最低元素替换列表中的第一个元素。
现在,列表中的第一个元素是列表的最低值。一旦你有了,你再次进入第一个循环,这一次,而不是第一个元素,你的i
是第二个元素,你的j
是你的第三个元素。
这一直持续到你循环遍历列表的所有元素。