小结:
- 一共进行数组的大小-1次的循环
- 每一趟排序的次数在逐渐的减少
- 优化:当我们发现在某趟排序中,没有发生一次交换,可以提前结束冒泡排序。
- 时间复杂度为O(n^2)
代码演示:
class Main{
public static void main(String[] args){
int arr[] = {3,-1,9,8,7}
buddle(arr);
}
public static void buddle(int[] arr){
int L = 0;
boolean flag = false;
for(int i=0;i<arr.length-1;i++){//控制整体循环次数
for(int j=0;j<arr.length-1-i;j++){//每次循环两数交换的次数
flag = true;
if(arr[j]>arr[j+1]){
L = arr[j];
arr[j] = arr[j+1];
arr[j+1] = L;
}
}
System.out.println(Arrays.toString(arr));
if(!flag){//说明没有进行一次交换
break;
}else{
flag=true;//重置flag进行下一次循环
}
}
}
}