基本过程:
- 原始顺序是48, 52, -51 ,0 ,67 ,23, -24。
- 开始48和52比较,48<52,则顺序不变;
- 52和-51比较,52>-51,则两者交换位置(48, -51, 52 ,0 ,67 ,23, -24);
- 52和0比较,52>0,则两者交换位置(48, -51, 0 ,52 ,67 ,23, -24;)
- 52和67比较,52<67,则顺序不变;
- 67和23比较,67>23,则两者交换位置(48, -51, 0 ,52 ,23 ,67, -24);
- 67和-24比较,67>-24,则两者交换顺序(48, -51, 0 ,52 ,23 ,-24, 67)。
至此第一轮结束,把最大值67排在最后,接着往下相同方法如此排序,直至形成从小到大的顺序
源码:
public class BubbleSort {public static void main(String[] args) {int[] arr = new int[] {48,52,-51,0,67,23,-24};for(int i = 0;i < arr.length - 1;i++) {for(int j = 0;j < arr.length - 1 - i;j++) {if(arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}for(int i = 0;i < arr.length;i++) {System.out.print(arr[i] + "\t");}}}
运行结果:
说明:关于变量 j 的取值范围,为什么是 arr.length - 1 - i 呢?因为每一次冒泡排序就会出现一个正确的排序数值,下一次排序自然不需要在参与排序,所以在每次排序之前都要除去这个数,例如第二次排序就除去67,第三次排序就除去52、67,第四次就除去48、52、67。