Java 冒泡排序

2021-03-03 16:29

阅读:647

标签:ati   否则   排列   print   完成后   原理   次数   int   style   

冒泡排序:

  比较相邻两个数的大小,如果左边大于右边,就交换左右两边的数据,否则不交换,当第一轮比较完成后,序列数中最大的数会排序到最右边;然后在进行其他数比较,比较原理相同,完成比较后,序列数会从左到右从小到大排列;

  原始数据:9 8 10 7 6 0 11

  第一轮循环:比较的数据(9 8 10 7 6 0 11)

  8 9 10 7 6 0 11  (第1次比较,交换)

  8 9 10 7 6 0 11   (第2次比较,不交换)

  8 9 7 10 6 0 11   (第3次比较,交换)

  8 9 7 6 10 0 11   (第4次比较,交换)

  8 9 7 6 0 10 11   (第5次比较,交换)

  8 9 7 6 0 10 11   (第6次比较,不交换)

  第二轮循环:比较的数据(9 8 10 7 6 0)

  8 9 7 6 0 10  (第1次比较,交换)
  8 7 9 6 0 10  (第2次比较,交换)
  8 7 6 9 0 10  (第3次比较,交换)
  8 7 6 0 9 10  (第4次比较,交换)
  8 7 6 0 9 10  (第5次比较,不交换)

  第三轮循环:比较的数据(8 9 7 6 0)

  8 9 7 6 0  (第1次比较,不交换)

  8 7 9 6 0  (第2次比较,交换)

  8 7 6 9 0  (第3次比较,交换)

  8 7 6 0 9  (第4次比较,交换)

  第四轮循环:比较的数据(8 7 6 0)

  7 8 6 0  (第1次比较,交换)

  7 6 8 0  (第2次比较,交换)

  7 6 0 8  (第3次比较,交换)

  第五轮循环:比较的数据(7 6 0)

  6 7 0  (第1次比较,交换)

  6 0 7  (第2次比较,交换)

  第六次循环:比较的数据(6 0)

  0 6  (比较一次,交换)

  总结:7个数总共要比较6轮(数组长度arr.length-1次),在第一轮中要每个数之间要比较6次,第二轮中剩余的数要比较5次,以此类推;

  程序示例:

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {9, 8, 10, 7, 6, 0, 11};

        for (int i = arr.length - 1; i > 0; i--) {   //外层控制循环次数
            for (int j = 0; 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 ) {
            System.out.print(arr[i]+",");
        }
    }
}

 

Java 冒泡排序

标签:ati   否则   排列   print   完成后   原理   次数   int   style   

原文地址:https://www.cnblogs.com/homle/p/14386769.html


评论


亲,登录后才可以留言!