importjava.util.Arrays;public classBubblesorting {public static voidmain(String [] args) {int[] array = { 67, 48, 1, 24, 33, 99, 89, 100 ,3 ,71 ,12 ,50 ,20, 9};
System.out.println("排序前:\r\n"+Arrays.toString(array));//冒泡排序//bublesorting(array);//bublesortPlus(array);
bubbleSortint(array);
}static void bublesorting(int[] array){//冒泡排序 标配版
int temp = 0;for (int i = 0; i < array.length; i++) {//array.length - 1 不减去1 array[j+1 ] 数组越界
for (int j = 0; j < array.length - 1; j++) {if(array[j] > array[j+1]) {
temp=array[j];
array[j]= array[j+1];
array[j+1] =temp;
}
}
}
System.out.println("排序后..............标准");
System.out.println(Arrays.toString(array));
}/*** 冒泡旗舰版*/
static void bublesortPlus(int[] array) {int temp = 0;int p = 0;/*** 1.1 array.length -1 比较数组长度 - 1 次即可得出结果*/
for (int i = 0; i < array.length -1; i++) {/*** 1. array.length -1 - i 的原因: 数组越界 - i 外层循环每循环一次
* ,就把最大数移动大 数组第一个或者是最后一位置 ,
* 内层 循环就 需要递减*/
for (int j = 1; j < array.length -1 - i ; j++) {if(array[j] > array[j+1]) {
temp= array[j+1];
array[j+1] =array[j];
array[j]=temp;
p++;
}
}
}
System.out.println("排序后..............旗舰"+" " + p + "次");
System.out.println(Arrays.toString(array));
}/*** 冒泡豪华版*/
static void bubbleSortint(int[] array) {int temp = 0;int c = 0;for (int i = 0; i < array.length -1; i++) {boolean flag = false;for (int j = 0; j < array.length -1 - i; j++) {if(array[j] > array[j+1]) {
flag= true;
temp=array[j];
array[j]= array[j+1];
array[j+1] =temp;
c++;
}if(flag == false) {break;
}
}
}
System.out.println("排序后..............豪华"+" " + c + "次");
System.out.println(Arrays.toString(array));
}
}