特点:每一轮排序是将相邻的两个元素比较大小,最终是一个从小到大或者从大到小的有序序列。
规律:1、轮次的规律:总共有n个元素,则需要比较n-1次
2、每一轮的比较规律:每一轮的比较规律比上一轮-1次
代码实现思想:至少需要两个变量参与编码,一个变量控制轮次,一个变量控制每一轮次中比较的次数。即至少两个for循环,外层for循环控制轮次,内层for循环控制当前轮次比较的次数。
举例:将数组中的元素从小到大排序 int[] arr = { 12, 22, 8, 49, 3 };
public class Test- [ ] { public static void main(String[] args) { int[] arr = {12, 8, 22, 3, 49}; int[] resArr = bubbleSort(arr); printIntArray(resArr); } /* 将输出int类型的数组功能封装成一个方法 */ public static void printIntArray(int[] array) { for (int i = 0; i < array.length; i++) { if (i == 0) { System.out.print("[" + array[i] + ", "); } else if (i == array.length - 1) { System.out.print(array[i] + "]"); } else { System.out.print(array[i] + ", "); } } //换行 System.out.println(); } /* 定义一个方法,进行冒泡排序 返回值类型:int[] 参数类型:int[] */ public static int[] bubbleSort(int[] arr) { for (int i = 1; i < arr.length ; i++) { for (int j = 0; j < arr.length - i; j++) { if (arr[j] > arr[j + 1]) { 注意:若将数组从大到小排列,需要改变符号 //比较交换 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } }