由于在冒泡排序的过程中,会存在一种情况:数组在最后一次排序前已经有序,但冒泡循环依然会一直执行后续的排序
未优化前的算法
package Day06;
import java.lang.reflect.Array;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] array = new int[10];
int temp;
for(int i = 0;i < array.length;i++){
//为array赋值随机数
array[i] = (int)(Math.random()*100);
}
System.out.println("生成的随机数组是:"+ Arrays.toString(array));
//冒泡循环
for(int i = 0;i < array.length - 1;i++){
//flag = true;
for (int j = 0; j < array.length - 1 - i;j++){
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
System.out.println("当前的排序位置顺序为:"+Arrays.toString(array));
}
}
结果截图:
优化后的算法:
```java
package Day06;
import java.lang.reflect.Array;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
//对冒泡排序的优化
int[] array = new int[10];
//设置一个标志位
boolean flag = true;
int temp;
for(int i = 0;i < array.length;i++){
//为array赋值随机数
array[i] = (int)(Math.random()*100);
}
System.out.println("生成的随机数组是:"+ Arrays.toString(array));
//冒泡循环
for(int i = 0;i < array.length - 1;i++){
flag = true;
for (int j = 0; j < array.length - 1 - i;j++){
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
flag = false;
}
}
if(flag == true)
break;
else
System.out.println("当前的排序位置顺序为:"+Arrays.toString(array));
}
System.out.println("排序后的数组是:"+ Arrays.toString(array));
}
}
结果截图:
发现可以很大程度的减少排序的次数