冒泡排序
1. 算法思想
从左到右,逐个比较相邻的元素,首轮将最大(或最小)的元素放到数组最右边,第二轮则会将第二大(小)的数放到右边第二的位置。
2. 代码实现
package sort;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 5, 7, 1, 4, 3, 6, 2 };
for (int item : arr) {
System.out.print(item + " ");
}
System.out.println();
bubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static int[] bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
return arr;
}
}
3. 运行结果

4. 过程分解
本次实例选择从小到大排序。
5和7比较,未发生交换。
7和1比较,发生交换。
7和4比较,发生交换。
7和3比较,发生交换。
7和6比较,发生交换。
7和2比较,发生交换。
此时7已经完成排序。
5和1比较,发生交换。
5和4比较,发生交换。
5和3比较,发生交换。
5和6比较,未发生交换。
6和2比较,发生交换。
此时6和7已完成排序。
……
同理,可通过多次循环,逐位完成排序,最终实现冒泡排序。