public class BubbleSort {
/**
* @name: sort
* @description: 优化冒泡排序方法
* @param array
* @return: void
* @date: 2020/11/5 10:45 上午
* @auther: wangyanfei
*
*/
// 优化冒牌排序
public static void sort(int array[]) {
// 声明中间变量
int temp = 0;
// 声明最后一次交换位置
int lastExchengeIndex = 0;
// 设置数据交换的边界
int sortBorder = array.length - 1;
for (int i = 0; i < array.length; i++) {
// 声明有序标记
boolean isSorted = true;
for (int j = 0; j < sortBorder; j++) {
// 判断前一个大于下一个元素 交换位置
if (array[j] > array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
// 如何不是有序位置发生改变 设置有序标记
isSorted = false;
// 更新最后一次交换位置
lastExchengeIndex = j;
}
}
// 将数组边界值更新 变小
sortBorder = lastExchengeIndex;
// 如果数组有序则跳出内层循环
if (isSorted) {
break;
}
}
}
public static void main(String[] args) {
int[] array = new int[] {1, 3, 4, 8, 2, 10, 5, 7, 6, 9};
sort(array);
System.out.println(Arrays.toString(array));
} }