JAVA 数组排序小程序里的这段代码麻烦解释一下?

public class Test {
    public static void main(String []args){
        //请在此处添加代码
         temp=list[i];        
         list[i]=list[j];
         list[j]=temp;
    }
        int []list = {1,3,2,5};
        Test test = new Test();
        test.sort(list);
    }
public void sort(int[] list) {//从小到大的排序

    int temp = 0;
    for(int i = 0;i<list.length;i++){
        for(int j = i;j<list.length;j++){
            if(list[i] > list[j]){
                //完成排序算法               
                list[i]=list[j];
            
        }
    }
    for(int i = 0;i<list.length;i++){
        System.out.println(list[i]);
    }
}
}

请问开头这三行代码代表什么意思?是要干嘛用?

temp=list[i]; 
list[i]=list[j];
list[j]=temp;
阅读 3.1k
3 个回答

这三行代码的意思就是把list[i]和 list[j]的值进行互换。
temp就是一个中转站。
举个例子。

比如有两个笼子,A,B。
A里面有一只老虎,B里面一只狮子,每个笼子内只能存在一个动物。现在要把A里面放狮子,B里面放老虎,怎么办?
此时我们就需要第三个笼子C帮忙了。

  1. 我们把老虎先放到C笼子里,此时A笼子就空了。

  2. 此时狮子就可以放到A笼子里了,B笼子就是空了。

  3. 最后把c笼子的老虎放到B笼子里了。

temp就是笼子c,A,B就是笼子A,B。
上面问为什么要互换,因为是排序啊。

list里的元素是1,3,2,5
当2和3进行比较的时候,肯定要互换位置。

把数组中i和j索引的元素互换一下。

就是将两个数交换一下,用temp作为容器存储一个值,因为list[i]=list[j]; 这样的话list[i]的值就会被list[j] 覆盖掉 因为要先用temp把 list[i] 的值放进去 这样list[j] 就能等于list[i] 的值,两个数就进行了交换