冒泡排序优化
/**
* 冒泡排序优化算法
*
* @param array
*/
public static void bubbleSortFast(int[] array) {
int len = array.length;
for (int i = 0; i < len - 1; i++) {
boolean change = false;
for (int j = 0; j < len - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
change = true;
}
}
if (!change) {
break;
}
}
}
/**
* 冒泡排序原始算法,未优化
*
* @param array
*/
public static void bubbleSortSlow(int[] array) {
int len = array.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
测试代码:
int[] array = {-30, -40, -99, 27, 88, 66, 89, 99};
上面数组进行排序,调用传统算法需要遍历28次,调用优化后的算法只需要遍历18次