1.原理
在无序区间内, 通过相邻数的比较, 将最大的数冒泡到无序区间的最后, 持续这个过程, 直到数组整体有序
2.代码实现
import java.util.*;
public class bubbleSort{
public static void bubbleSort(int[] array){
for(int i = 0; i < array.length - 1; i++){ //减治算法
for(int j = 0; j < array.length - i - 1; j++){ // -i表示每次遍历都会少一个数
//相等不交换, 保证稳定性
if(array[j] > array[j+1]){
swap(array, j, j+1);
}
}
}
}
public static void swap(int[] array, int a, int b){
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
public static void main(String[] args){ //打印测试
int[] array = {3,4,9,2,6,5,6,12};
bubbleSort(array);
for(int i = 0; i <= array.length - 1; i++){
System.out.print(array[i]+" ");
}
}
}
3.性能分析
时间复杂度: 最好 O(n) 数组有序
平均 O(n^2)
最差 O(n^2) 数组逆序
空间复杂度: O(1)
稳定性: 稳定
来源:CSDN
作者:asdx1020
链接:https://blog.csdn.net/asdx1020/article/details/104117590