冒泡排序算法
1 每一次循环结束之后,都要找出最大的数据,放到参与比较的这堆数据的最右边。(冒出最大的那个气泡)
2 核心:
拿着左边的数字和右边的数字进行比对,当左边 > 右边的时候,交换位置。
3 冒泡排序
参与比较的数据 9 8 10 7 6 0 11
第一次循环:
8 9 10 7 6 0 11 (9和8进行比较:交换)
8 9 10 7 6 0 11 (9和10进行比较:不交换)
8 9 7 10 6 0 11 (10和7进行比较:交换)
8 9 7 6 10 0 11 (10和6进行比较:交换)
8 9 7 6 0 10 11 (10和0进行比较:交换)
8 9 7 6 0 10 11 (10和11进行比较:不交换)
最终冒泡的最大数据在右边:11
参与比较的数据:8 9 7 6 0 10
第二次循环:
8 9 7 6 0 10(8和9进行比较,不交换)
8 7 9 6 0 10(9和7进行比较,交换)
8 7 6 9 0 10(9和6进行比较,交换)
8 7 6 0 9 10(9和0进行比较,交换)
8 7 6 0 9 10(9和10进行比较,不交换)
参与比较的数据:8 7 6 0 9
第三次循环:
7 8 6 0 9(8和7进行比较,交换)
7 6 8 0 9(8和6进行比较,交换)
7 6 0 8 9(8和0进行比较,交换)
7 6 0 8 9(8和9进行比较,不交换)
参与比较的数据:7 6 0 8
第四次循环:
6 7 0 8(7和6进行比较,交换)
6 0 7 8(7和0进行比较,交换)
6 0 7 8(7和8进行比较,不交换)
参与比较的数据:6 0 7
第五次循环:
0 6 7(6和0进行比较,交换)
0 6 7(6和7进行比较,不交换)
参与比较的数据:0 6
第六次循环:
0 6(0和6进行比较,不交换)
冒泡排序代码:
package com.javaSe.Arrays; /* 冒泡排序算法 1 每一次循环结束之后,都要找出最大的数据,放到参与比较的这堆数据的最右边。(冒出最大的那个气泡) 2 核心: 拿着左边的数字和右边的数字进行比对,当左边 > 右边的时候,交换位置。 3 冒泡排序 参与比较的数据 9 8 10 7 6 0 11 第一次循环: 8 9 10 7 6 0 11 (9和8进行比较:交换) 8 9 10 7 6 0 11 (9和10进行比较:不交换) 8 9 7 10 6 0 11 (10和7进行比较:交换) 8 9 7 6 10 0 11 (10和6进行比较:交换) 8 9 7 6 0 10 11 (10和0进行比较:交换) 8 9 7 6 0 10 11 (10和11进行比较:不交换) 最终冒泡的最大数据在右边:11 参与比较的数据:8 9 7 6 0 10 第二次循环: 8 9 7 6 0 10(8和9进行比较,不交换) 8 7 9 6 0 10(9和7进行比较,交换) 8 7 6 9 0 10(9和6进行比较,交换) 8 7 6 0 9 10(9和0进行比较,交换) 8 7 6 0 9 10(9和10进行比较,不交换) 参与比较的数据:8 7 6 0 9 第三次循环: 7 8 6 0 9(8和7进行比较,交换) 7 6 8 0 9(8和6进行比较,交换) 7 6 0 8 9(8和0进行比较,交换) 7 6 0 8 9(8和9进行比较,不交换) 参与比较的数据:7 6 0 8 第四次循环: 6 7 0 8(7和6进行比较,交换) 6 0 7 8(7和0进行比较,交换) 6 0 7 8(7和8进行比较,不交换) 参与比较的数据:6 0 7 第五次循环: 0 6 7(6和0进行比较,交换) 0 6 7(6和7进行比较,不交换) 参与比较的数据:0 6 第六次循环: 0 6(0和6进行比较,不交换) */ public class BubbleSort { public static void main(String[] args) { // int类型数组对象 int[] arr = {9,8,10,7,6,0,11}; // 7条数据,循环6次。一下的代码可以循环6次。 // for (int j = 0; j < i.length - 1; j++) { // System.out.println(j); // } // 7条数据,循环6次。一下的代码可以循环6次。(冒泡排序的外层循环采用这种方式) // int count = 0; for (int i = arr.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { // count++; if (arr[j] > arr[j + 1]){ // 交换位置 // i[k] 和 i[k+1] 交换 int temp; temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } // System.out.println("比较次数:" + count); //比较次数:21 // 输出结果 for (int k = 0; k < arr.length; k++) { System.out.print(arr[k] + " "); } } }