原理

  • 每次检查相邻的两个元素,如果两个元素不满足排序条件,就将其交换,当没有相应的元素需要交换时,排序完成
  • 经过i次扫描后,数组的后i项时满足排序条件的,故冒泡排序最多需要扫描n-1遍数组

    性质

  • 稳定性 : 稳定的

  • 时间复杂度 :
    • 最优:冒泡排序 - 图1
    • 平均和最坏:冒泡排序 - 图2

      代码实现

      1. public void bubble_sort(int[] a) {
      2. for (int i = 0; i < a.length - 1; i++) {
      3. boolean existSwap = false;
      4. for (int j = 0; j < a.length - i - 1; j++) {
      5. if (a[j] > a[j + 1]) {
      6. int tmp = a[j];
      7. a[j] = a[j + 1];
      8. a[j + 1] = tmp;
      9. existSwap = true;
      10. }
      11. }
      12. if (!existSwap) {
      13. break;
      14. }
      15. }
      16. }