// TODO 冒泡排序的优化
public class BubbleSort {
public static void main(String[] args) {
// int[] arr={9,6,4,2,3};
// int[] arr={0,1,2,3,9};
// 测试时间复杂度 O(n^2)
int [] arr = new int[80000];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random()*8000000);
}
long start_Time = System.currentTimeMillis();
BubbleSort(arr);
long stop_Time = System.currentTimeMillis();
// 10s || 11s
System.out.printf("一共耗费了%ds",(stop_Time - start_Time)/1000);
}
public static void BubbleSort(int[] arr){
int temp = 0;
int count=0;
int num =0;
for (int i = 0; i < arr.length-1; i++) {
boolean flag = false;
count ++;
for (int j = 0; j < arr.length - i - 1; j++) {
num ++;
if(arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = true;
}
}
/* System.out.printf("========第%d轮排序后情况========== \n",i+1);
System.out.println(Arrays.toString(arr));
*/ if (!flag ){
break;
}
}
/*
System.out.println("===========最终的结果============");
System.out.println(Arrays.toString(arr));
System.out.printf("排序了%d轮,遍历了%d次",count,num);
*/
}
}
八大排序之冒泡排序
最新推荐文章于 2024-06-15 16:17:24 发布