难以理解的一个排序方法-冒泡排序。(新手)

//创建的一个包名。

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、是方便数值的互换。

打个比方说,你有两只手,每个手都拿了一个杯子,这两个杯子都是满的,但是

你想把左手杯的水倒在右手杯子里,这个时候,这个新值,就相当于别人递过来

一只手,手里拿了一个空杯子,这样你是不是就可以对两个杯子里的水进行互换

了?

原文地址:https://www.cnblogs.com/lxr521/p/10524613.html