//创建的一个包名。
package demo;
//冒泡排序。
//定义的一个类
public class Test5 {
//公共静态的主方法。
public static void main(String[] args) {
//创建一个数组。
int[] arr = {22,14,53,6,34,56,2,61};
//14 22 6 35 53 2 56 61
//对数组进行排序(定义的调用方法)
sort(arr);
//定义的一个调用方法。(对完成排序的数组进行一次遍历并且打印)
printStore(arr);
}
//调用对数组排序的方法。
public static void sort(int[] arr) {
//创建一个for循环。
for(int i=0;i<arr.length-1;i++) {
//嵌套一个for循环。
for(int j=0;j<arr.length-i-1;j++) {
//创建一个if语句。
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//调用遍历方法。
public static void printStore(int[] arr) {
//对数组进行一次遍历,然后进行打印。
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
=======在我同学的帮助下,我的理解有以下几点。=======
1:arr.length-1是长度-1。
2:arr.length-i-1 是减掉一个已经比较出来的最大的那个数,然后再在长度上减掉1。
ex:
数组内容 22,14,53,6,34,56,2,61
比较内容 14, 6,53, 2,34,56,22,61
6, 2,53,14,34,56,22,61
2,6,53,14,34,56,22,61
到这里,2和6就已经可以被剔除了。(这些数任然还在进行循环,剔除只是我个人理解而已)
2,6,14,34,22,56,53,61
到这里,14又被剔除了。
2,6,14,22,34,56,53,61
到这里,22也被剔除了。
2,6,14,22,34,53,56,61
2.6.14.22,34.53.56.61
从上面咱们可以看出,61是已经比较出来的一个最大值。
-i的意思就是减去61,不再在循环里和其他数作比较。
3.if(arr[j]>arr[j+1])
意思就是如果第一个数大于第二个数,就执行下面的内容。
j+1的意思就是 让j和j旁边的数进行比较。
4.之所以在for循环里加入了一个新值:int temp、是方便数值的互换。
打个比方说,你有两只手,每个手都拿了一个杯子,这两个杯子都是满的,但是
你想把左手杯的水倒在右手杯子里,这个时候,这个新值,就相当于别人递过来
一只手,手里拿了一个空杯子,这样你是不是就可以对两个杯子里的水进行互换
了?