import java.util.Arrays;
public class Test1 {
public static void bubbleSort(int[] arr){
int length = arr.length;
//以最坏情况来看,排序最多能排length-1轮,用i来表示比较的轮次,从1开始计数
for(int i=1;i<=length-1;i++){
//flag表示排序过程中是否有位置交换
boolean flag = false;
//j表示数组的下标,相邻的2个元素。arr[j]和arr[j+1]进行比较
//每排完一轮需要比较的数就减1,所以j+1<length-i+1,即j<length-i
for(int j=0;j<length-i;j++){
//如果左边的元素大于右边的元素则发生交换
if(arr[j]>arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
flag = true;
}
}
//如果一轮中没有发生位置交换,表示排序已完成。外层循环可以停了
if(!flag){
System.out.println("跳出循环");
break;
}
}
}
public static void main(String[] args){
int[] ds = {1,2,3,4,5};
bubbleSort(ds);
System.out.println(Arrays.toString(ds));
}
}
网友评论