java一维数组冒泡排序可以一行一行的解释一下吗

int arr [] ={4,1,7,2,9,3,5,8,6};
//冒泡排序由大到小
for (int i = 0; i < arr.length-1; i++){
for (int j = 0; j < arr.length-1 ; j++) {
if (arr[j]<arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//取得最大值
int temp = -1;
for (int i = 0; i < arr.length; i++) {
if(arr[i]>temp){
temp = arr[i];
}
}
System.out.println(temp);

我没学过Java但我会点算法这冒泡排序,就是双重循环,每次像打擂台一样将最小的数放到最后,重复长度-1次就排序成功了;


int arr [] ={4,1,7,2,9,3,5,8,6};// 定义数组arr,长度为9
//冒泡排序由大到小
for (int i = 0; i < arr.length - 1; i++) {// 外层循环定义i=0,循环次数为arr数组的元素个数,每次循环i加1
    for (int j = 0; j < arr.length - 1; j++) {// 内层循环,定义j=0,循环次数为数组arr的元素个数,每次循环j加1
        if (arr[j] < arr[j + 1]) {// 每次循环判断当前元素是否小于后一个元素,如果条件成立则互换两个元素位置
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
    for (int i = 0; i < arr.length; i++) {// 循环定义i=0,循环次数为arr数组的元素个数,每次循环i加1
        System.out.println(arr[i]);// 输出数组的每一个元素
    }
        //取得最大值
        int temp = -1;
        for (int i = 0; i < arr.length; i++) {// 循环定义i=0,循环次数为arr数组的元素个数,每次循环i加1
            if (arr[i] > temp) {// 判断当前元素是否大于temp,如果条件成立则将当前元素赋值给temp
                temp = arr[i];
            }
        }
            System.out.println(temp);// 输出temp

img