```
import java.util.Arrays;
// 冒泡排序
// 对长度为两个及以上的数组进行操作
// 思路: 与选择排序对比,选择排序每次选最小,从前往后排
// 冒泡排序,每次选最大,从后往前走
// 核心,从前往后,两两对比,大的往后放,循环一次,无序中选出最大值放在最后
public class BubbleSort {
public static void main(String[] args) {
int[] toSortArr = {4,5,1,2,3};
for(int i = toSortArr.length - 1; i > 0 ; i--) {
for(int j = 0; j < i; j++) {
if(toSortArr[j] > toSortArr[j+1]) {
swap(toSortArr, j+1, j);
}
}
}
System.out.println(Arrays.toString(toSortArr));
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
冒泡排序产生的运算为,外层(n-1)次,内层是从(n-1)递减到1,所以是(n-1)的前n项和,等差数列,时间负责度o(n^2)