1. 算法思想
冒泡排序采用的是蛮力法的算法设计思想。
冒泡排序的基本思想是:两两比较相邻的记录,如果是反序则交换,直到没有记录发生交换时
2. 具体过程
- 将整个待排序数组的记录划分为有序区和无序区,初始时有序区为空,无序区包括整个待排序数组
- 对无序区从前向后依次比较相邻两个记录,若反序则交换,从而使得较小(大)的记录向前移动,值较大(小)的记录向后移动
- 重复执行步骤2,直到没有记录发生交换为止
3. 动画演示
假设我们需要把记录按从小到大排序,蓝色表示无序区,红色表示有序区,下面的动画表示第一趟排序的过程。

4. 代码实现
Java版:
/**
* @author created by linjunhao
* @date 2020/3/25
* @description 冒泡排序
*/
public class BubbleSort {
public void sort(int[] array, int n) {
//第一趟起泡排序的区间是[0, n-1];
int bound, exchange = n - 1;
//当上一趟排序有元素发生交换时就继续执行下一趟
while (exchange != 0) {
bound = exchange;
exchange = 0;
for (int j = 0; j < bound; j++) {
//在待排序区间内,两两元素相互比较
if (array[j] < array[j + 1]) {
//交换
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
//记录交换位置
exchange = j;
}
}
}
}
}