贝利信息

C++如何实现冒泡排序算法?C++经典排序算法入门【数据结构】

日期:2025-12-26 00:00 / 作者:裘德小鎮的故事
冒泡排序是C++入门必学的排序算法,通过重复遍历数组、两两比较并交换相邻元素,使较大元素逐轮“浮”至末尾,实现升序排列;支持模板泛化,时间复杂度最坏O(n²),最好O(n),稳定且空间复杂度为O(1)。

冒泡排序是C++入门必学的排序算法,原理简单、逻辑清晰,适合理解排序的基本思想。它通过重复遍历待排序数组,比较相邻元素并交换位置,让较大(或较小)的元素像气泡一样逐渐“浮”到一端。

核心思路:两两比较,逐轮下沉

每一轮遍历中,从第一个元素开始,依次比较相邻两个数;如果顺序错误(比如升序时前一个比后一个大),就交换它们。这样每轮结束,当前未排序部分的最大值就会被“冒泡”到末尾。重复这个过程,直到没有交换发生,说明已排好序。

基础实现(升序排列)

以下是一个标准、易懂的C++实现:

  // 冒泡排序函数(升序)
  void bubbleSort(int arr[], int n) {
    for (int i = 0; i       bool swapped = false;                        // 优化:记录是否发生交换
      for (int j = 0; j         if (arr[j] > arr[j + 1]) {
          std::swap(arr[j], arr[j + 1]);
          swapped = true;
        }
      }
      if (!swapped) break;                         // 提前退出:已有序
    }
  }

关键细节与常见优化

扩展:支持任意类型(模板写法)

用模板泛化,让函数能处理 doublestring 或自定义类(需支持 ):

  template
  void bubbleSort(T arr[], int n) {
    for (int i = 0; i       bool swapped = false;
      for (int j = 0; j         if (arr[j] > arr[j + 1]) {
          std::swap(arr[j], arr[j + 1]);
          swapped = true;
        }
      }
      if (!swapped) break;
    }
  }

基本上就这些。掌握冒泡排序,不单是为了排序本身,更是为理解后续快排、归并等算法打下逻辑基础。