版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33054265/article/details/82708676
冒泡排序就是直接交换排序,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。如升序:如果第一个比第二个大就交换,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对)。
时间复杂度O(N^2),稳定排序算法。
public static void bubbleSort(int[] a){
for(int i = 0; i < a.length - 1; i++){
for(int j = 0; j < a.length - i - 1; j++){
if(a[j] > a[j + 1]){
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
改进:当某一趟判断后,发现未进行一次交换,说明此时已经有序,则不需要再进行下趟判断和交换。
public static void bubbleSort2(int[] a){
boolean needExchange = true;
for(int i = 0; i < a.length - 1 && needExchange; i++){
needExchange = false;
for(int j = 0; j < a.length - i - 1; j++){
if(a[j] > a[j + 1]){
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
needExchange = true;
}
}
}
}