C 语言冒泡排序程序

2025年4月2日 | 阅读4分钟

冒泡排序是一种简单直观的排序算法。它重复地交换相邻的元素,如果它们的顺序错误,直到数组排序完成。在这个算法中,最大的元素在每次迭代中“冒泡”到数组的末尾。对于大型数据集,冒泡排序效率低下,但对于教学目的和小型数据集很有用。在本文中,我们将用C编程语言实现冒泡排序算法。

第一步是定义冒泡排序函数。这个函数接收一个整数数组和数组的大小作为其参数。该函数不返回任何值,因为它会修改原始数组。以下是函数定义:

该函数有两个循环。外层循环从数组的第一个元素运行到倒数第二个元素。内层循环从第一个元素运行到数组未排序部分的倒数第二个元素。内层循环的条件是n - i - 1,因为数组的最后i个元素已经排好序了。

在内层循环的每次迭代中,我们比较相邻的元素。如果左边的元素大于右边的元素,我们就交换它们。内层循环完成后,最大的元素保证会出现在数组未排序部分的末尾。

现在,我们可以编写主函数来测试我们的冒泡排序实现。以下是主函数以及之前的部分:

C 语言程序

主函数创建了一个大小为7的整型数组arr,并用随机数对其进行初始化。然后,我们通过将数组的总大小除以一个整型元素的大小来计算数组的大小。接下来,我们调用bubble_sort函数对数组进行排序。最后,我们使用一个for循环打印排序后的数组。

当我们运行该程序时,我们应该会看到以下输出:

Sorted array: 11 12 22 25 34 64 90

这个输出表明我们的冒泡排序实现正确地将数组按升序排序。

要运行该程序,我们需要使用C编译器对其进行编译。以下是GCC的编译命令示例:

该命令编译bubble_sort.c文件,并生成一个名为bubble_sort的可执行文件。

总之,冒泡排序算法重复交换相邻元素,直到数组排序完成。该算法的时间复杂度为O(n2),这使其对于大型数据集效率低下。但是,它对于教学目的和小型数据集很有用。我们用C编程语言实现了冒泡排序算法,并用一个简单的例子对其进行了测试。

特性

  • 冒泡排序是一种简单的排序算法。
  • 它通过重复交换顺序错误的相邻元素来工作。
  • 该算法按升序或降序对数组进行排序。
  • 在最坏情况下,它的时间复杂度为O(n2),其中n是数组的大小。

用途

  • 冒泡排序对于教学目的和小型数据集很有用。
  • 由于其时间复杂度,它不适合大型数据集。

优点

  • 冒泡排序易于理解和实现。
  • 它执行排序所需的额外内存空间极小。

缺点

  • 由于其时间复杂度,它对大型数据集效率不高。
  • 与其他排序算法(如快速排序和归并排序)相比,它的性能较差。

结论

冒泡排序是一种简单直观的排序算法,对于教学目的和小型数据集很有用。然而,其时间复杂度使其对大型数据集效率低下。因此,它在实际应用中不常用。对于大型数据集,其他排序算法(如快速排序和归并排序)更为高效。