您现在的位置是:网站首页>技术百科技术百科

排序算法‌ 之‌ ‌‌‌冒泡排序(Bubble Sort)

小大寒2024-01-01[技术百科]博学多闻

排序算法‌ 之‌ ‌‌‌冒泡排序(Bubble Sort)冒泡排序(Bubble Sort)是一种基础的比较排序算法。其核心思想是不断遍历数组,每次将相邻两个元素进行比较并交换位置,以此将最大或最小值逐步移动到数组的一端。它简单直观,但性能较差,适用于小规模数据集。

排序算法‌ 之‌ ‌‌‌冒泡排序(Bubble Sort)

1. 基础概念

1.1 冒泡排序的定义

冒泡排序是一种通过重复比较相邻元素并交换它们的位置,逐步将未排序的部分中最大(或最小)的元素“冒泡”到数组末尾的排序算法。它属于比较排序,典型为稳定排序。

1.2 冒泡排序的特点

  • 算法分类:内部排序,基于交换的比较排序。
  • 稳定性:稳定排序(相同的元素排序后相对位置不变)。
  • 时间复杂度:最坏和平均情况为 O(n²),最好情况为 O(n)。
  • 空间复杂度:O(1)(原地排序)。
  • 实现简单,但性能较低,适用于数据规模较小的场景。

1.3 使用场景

冒泡排序适用于以下场景:

  • 需要实现简单且容易理解的排序功能时。
  • 数据量较小且几乎有序时。
  • 作为排序算法学习的入门算法。

2. 实现与操作

2.1 核心操作实现

以下代码展示了冒泡排序的核心操作实现:

2.2 代码详解

  • bubbleSort 函数实现了冒泡排序,通过两层循环遍历数组。
  • 在每次内层循环中,比较相邻元素并交换位置,较大的元素逐步向右“冒泡”。
  • 设置 swapped 标志,若一次完整遍历未发生交换,直接退出循环,优化性能。
  • 通过 printArray 函数打印数组,用于显示排序前后的结果。

3. 时间与空间复杂度分析

3.1 时间复杂度

  • 最坏情况:O(n²),适用于完全逆序的数组。
  • 平均情况:O(n²),适用于随机排列的数组。
  • 最好情况:O(n),适用于已排序的数组(优化后检测交换标志)。

3.2 空间复杂度

冒泡排序使用原地排序算法,不需要额外的存储空间,空间复杂度为 O(1)。

4. 优缺点与局限性

4.1 优点

  • 实现简单,易于理解和编码。
  • 对小型数组性能尚可。
  • 可通过标志位优化检测提前结束。

4.2 缺点与局限性

  • 时间复杂度较高,效率低,适用于小规模数据。
  • 对于大规模数据,性能远不如快速排序、归并排序等高效算法。

5. 常见应用场景

5.1 实际应用

以下代码展示了对小型数组排序的应用:

6. 代码编译与运行

6.1 编译命令

使用以下命令编译代码:

gcc -o bubble_sort bubble_sort.c

6.2 测试用例

输入数组为 {64, 34, 25, 12, 22, 11, 90},输出结果为:

排序前的数组: 64 34 25 12 22 11 90
排序后的数组: 11 12 22 25 34 64 90
    

阅读完毕,很棒哦!

文章评论

站点信息

  • 网站地址:www.xiaodahan.com
  • 我的QQ: 3306916637