冒泡排序是最出名 的排序算法 之一,总共有八大排序。
冒泡排序代码并不复杂,共两层循环,外层冒泡轮数,里层依次比较。
算法步骤:
-
比较数组中两个相邻元素,如果第一个元素比第二个元素大,交换位置
-
每一次比较,都会产生一个最大,或者最小的数字;
-
下一轮可以少一次排序
-
依次循环,直到结束
代码演示:
java
public static void main(String[] args) {
int[] a = {1,5,6,98,52,66,91,2};
int[] sort = sort(a);
System.out.println(Arrays.toString(sort)); //[98, 91, 66, 52, 6, 5, 2, 1]
}
//冒泡排序
public static int[] sort(int[] array){
//临时变量
int c = 0;
//外层循环,判断我们循环要走多少次
for (int i = 0; i < array.length-1; i++) { //-1是为了不让溢出
//内层循环,比较两个数
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]>array[j]){
c = array[j];
array[j] = array[j+1];
array[j+1] = c;
}
}
}
return array;
}
当然,我们还能进一步优化一下:
java
public static int[] sort(int[] array){
//临时变量
int c = 0;
//外层循环,判断我们循环要走多少次
for (int i = 0; i < array.length-1; i++) { //-1是为了不让溢出
boolean flag = false; //通过flag标志位减少无意义比较
//内层循环,比较两个数
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]>array[j]){
c = array[j];
array[j] = array[j+1];
array[j+1] = c;
flag = true;
}
}
if (flag == false){
break;
}
}
return array;
}