1. 什么是冒泡排序
冒泡排序是一种排序算法,可以实现对要排序的元素列按照从小到大(或者从大到小)的顺序进行排列(我们还可以直接使用java中Arrays.sort(int[] a)进行排序)。
2. 冒泡排序思想
简单来说,我们可以把排序的过程看成是水中冒泡的过程:水中有一系列的水泡(有大有小),大的水泡向下沉,小的水泡向上浮。。。。最终的结果就是按照从上往下看去水泡从最小依次增大。
放到数组的比较中就是把数组中无序的数,按照"冒泡"的规则将其进行有序排序。
3. 算法描述:
- 比较相邻的元素,如果前一个比后一个大,就执行交换操作;
- 第一趟排序:第1个和第2个看成一对进行比较,然后第2个和第3个看成一对进行比较…直到倒数第2个和倒数第1个看成一对进行比较。
- 第二趟排序:遵循第一趟的规则(只不过要比第一趟少比较一个数)
- …
- 第n-1趟 …
这里用一个动图来显示(图片来自于网络)
4. 算法实现
public static void main(String[] args) {
//创建一个int类型的数组用来测试冒泡排序
int[] arr = new int[]{2, 6, 5, 4, 125, 45, 23, 47, 5, 46};
bubblesort(arr); //执行冒泡排序
System.out.print("最终结果为:");
showArr(arr); //打印数组内容
}
/*
* @Author LY
* @Description 冒泡排序 按照从小到大的顺序排列
* @Date 11:36 2020/7/21
**/
private static void bubblesort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
} else {
for (int i = 0; i < arr.length; i++) {
System.out.print("第" + i + "趟的比较结果为:");
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
System.out.print(arr[j] + "\t");
}
System.out.println();
}
}
}
private static void showArr(int[] arr) {
for (int value : arr) {
System.out.print(value + "\t");
}
}
结果显示:
当然我们还能使用java中Arrays下提供的一个sort方法进行快速实现排序效果:
public static void main(String[] args) {
//创建一个int类型的数组用来测试冒泡排序
int[] arr = new int[]{2, 6, 5, 4, 125, 45, 23, 47, 5, 46};
Arrays.sort(arr);
showArr(arr);
}
最终结果为: