前言
冒泡排序平时在数据量小的时候用的人可能有也有不少,虽说时间复杂度不低,但是冒泡算法的最优解效率也是不错的
提示:以下是本篇文章正文内容,下面案例可供参考
一、冒泡排序
废话不多说直接上代码
private static void sort(int[] array1) {
int temp = 0;
boolean flag = false;
for (int i = 0; i < array1.length -1; i++) {
for (int j = 0; j < array1.length -1 -i; j++) {
if (array1[j] > array1[j + 1]) {
temp = array1[j];
flag = true;
array1[j] = array1[j + 1];
array1[j + 1] = temp;
}
}
if(flag == false){
break;
}else {
flag = false;
}
}
System.out.println(Arrays.toString(array1));
}
这种算法进行了简单的优化,但是优化有限,只是减少了一部分的循环
二、最佳优化方案
private static void sort1(int[] array1) {
int temp = 0;
boolean flag = false;
for (int i = 0; i < array1.length -1; i++) {
for (int j = 0; j < Math.sqrt(array1.length -1 -i); j++) {
if (array1[j] > array1[j + 1]) {
temp = array1[j];
flag = true;
array1[j] = array1[j + 1];
array1[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(array1));
}
这里使用了Math类的开立方根方法,可以减少大量的循环操作
我直接往数组中插入了八万条数据,下面来看执行时间。
利用sort方法执行之间为九秒:
利用sort1方法,就是开平凡根的方法瞬间就完成了