冒泡排序用双重循环实现,外层控制n−1轮排序,内层每轮比较前n−1−i对相邻元素并交换,可加swapped标志位优化提前结束。

冒泡排序用双重循环实现,核心是外层控制轮数,内层负责每轮的相邻比较与交换。
外层循环:控制排序轮数
数组有 n 个元素,最多需要 n−1 轮就能排好序。因为每轮至少把一个最大(或最小)元素“冒”到末尾,最后一轮只剩两个元素,比一次就确定顺序了。所以外层循环从 0 到 n−2(含),或写成 i 。
内层循环:负责每轮的相邻比较
第 i 轮时,末尾的 i 个元素已有序,无需再比。所以内层只需比较前 n−1−i 对相邻元素,下标范围是 j 从 0 到 n−2−i(含)。每次比较 arr[j] 和 arr[j+1],若顺序错误(如升序时前者大于后者),就交换。
交换操作要写在内层循环体内
不能只判断不交换,否则没效果。典型写法是:
- 用临时变量暂存 arr[j]
- 把 arr[j+1] 赋给 arr[j]
- 再把临时值赋给 arr[j+1]
可加优化:提前结束
如果某一轮内层循环一次交换都没发生,说明数组已经有序,可以跳出外层循环。做法是在外层循环开始前设一个标志位(如 swapped = false),内层每次交换后置为 true;本轮结束后检查,若仍是 false,直接 break。











