之前写过一篇关于冒泡排序的文章,飞机:冒泡排序
今天我们来看一个优化版本,关于原理之前已经有了,不懂的可以直接跳转到上一篇文章,本篇直接贴代码:
/**
* @author LFDMW
* @date 2021-01-12 21:43
*/
public class BubbleSort {
public static void main(String[] args) {
int[] nums = {3, 1, 8, 9, 2, 7, 0};
int sortBorder = nums.length - 1;
int lastIndex = 0;
for (int i = 0; i < nums.length - 1; i++) {
boolean isSort = true;
for (int j = 0; j < sortBorder; j++) {
if (nums[j] > nums[j + 1]) {
nums[j] ^= nums[j + 1];
nums[j + 1] ^= nums[j];
nums[j] ^= nums[j + 1];
lastIndex = j;
isSort = false;
}
}
sortBorder = lastIndex;
if (isSort) {
break;
}
}
for (int num : nums) {
System.out.print(num + " ");
}
}
}
记录了每次交换的位置,这样可以过滤掉已经是最大或者最小值的数据了,节省了比较次数