例如:3,9,1,2,5这五个数进行冒泡排序
第一趟排序:
(1)3,9,1,2,5
(2)3,1,9,2,5
(3)3,1,2,9,5
(4)3,1,2,5,9
第二趟排序:
(1)1,3,2,5,9
(2)1,2,3,5,9
(3)1,2,3,5,9
第三趟排序:
(1)1,2,3,5,9
(2)1,2,3,5,9
第四趟排序:
(1)1,2,3,5,9
从上面排序过程可知,第二趟已经排好序了,不需要进行第三次、第四次的排序。可增加标识位。
public void BubbleSort(int[] arr){
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;
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
// 根据是否进行过变换,确定是否要进行这一轮的比较
if(!flag){
break;
}else{
flag = false;
}
}
}