冒泡排序的时间复杂度是o(n^2)
冒泡排序的思想:
1.前一个数和后一个数进行比较,如果前一个大于后一个就把前后两个值进行替换
2.每一轮循环结束之后,会找到最大的数,下一轮循环减去最大的数
3.主要就是每一次循环冒泡一个最大数,然后下一次循环剔除最大数,然后再找到第二个最大数
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {3, 9, -1, 5, 10, -2, 20, 30};
//测试花费的时间
int array[] = new int[80000];
for (int i = 0; i < 80000; i++) {
array[i] = (int) (Math.random() * 800000);
}
//开始时间
long time = new Date(System.currentTimeMillis()).getTime();
bubbleSort(array);
//结束时间
long time2 = new Date(System.currentTimeMillis()).getTime();
System.out.println(((time2 - time) / 1000) + "秒");
}
public static void bubbleSort(int[] arr) {
int temp = 0;
boolean flag = false;//判断是否执行过交换
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]) {
flag = true;
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
// System.out.println("第"+(i+1)+"次排序的结果为");
// System.out.println(Arrays.toString(arr));
if (!flag) {//如果一次都没有进行交换的话
break;
} else {
flag = false;
}
}
}
}