优化:
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行交换,就说明序列有序,因为要在排序过程中设置一个flag标志判断元素是否进行交换,从而减少不必要的比较。
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int arr[]={3,9,-1,10,20};
//为了容纳理解,我们把冒泡排序的演变过程,给大家展示
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];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
System.out.println("第"+(i+1)+"趟排序后的数组");
System.out.println(Arrays.toString(arr));
if (!flag){//一趟中一次都没有
break;
}else {
flag=false;//重置进行下一次判断
}
}
}
}