冒泡排序
定义一个方法bubbleSort,形式参数是一个int类型的数组arr. 返回值为void。
方法体:是冒泡排序的逻辑。需要考虑是如果是已排序状态,则打断下一轮循环。
扩展:两个元素的交换封装成方法swap(int a,int b),方法体字节写
/**
* 对int数组的冒泡排序的封装逻辑
*/
public static void bubbleSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
/*给每轮都定义一个标记flag,默认值为false*/
boolean flag = false;
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
flag = true;//如果需要交换,我们就改变当前轮的flag,改为true.
swap(arr,j,j+1);
}
}
/*当前轮结束后,我们查看flag标记是否改变过,如果没有改变,说明没有交换过元素
那么,从而证明此数组,已经是排好序的状态,无需继续下一轮的比较*/
if(!flag){
break;
}
}
}
//数组的两个元素进行交换,i,j是两个元素的下标
public static void swap(int[] arr,int i,int j ){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}