📅  最后修改于: 2023-12-03 14:55:57.652000             🧑  作者: Mango
气泡排序(英语:Bubble Sort)是一种简单的排序算法,也是一种稳定的排序算法。排序时,算法会重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,因为此时已经达到了完全排序的状态。
#include <stdio.h>
int main()
{
int data[10] = {99, 67, 88, 22, 34, 56, 92, 10, 67, 45};
int temp, i, j;
// 冒泡排序
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9 - i; j++)
{
if (data[j] > data[j + 1])
{
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
// 输出排序后的数组
for (i = 0; i < 10; i++)
{
printf("%d ", data[i]);
}
return 0;
}
以上是一个基本的气泡排序的C程序。我们来看一下程序的结构和具体实现:
首先,我们定义了一个整型数组data
,并赋值为10个元素的随机数列。
然后,我们定义了三个整型变量temp
、i
和j
。其中temp
用来交换数列中两个元素的值,i
用于控制循环次数,j
用于比较相邻两个元素的大小并进行交换。
接下来的两个for
循环是实现冒泡排序的核心代码。外层循环定义了需要进行比较的次数,内层循环则用来比较相邻两个元素的大小并进行交换。我们通过比较data[j]
和data[j+1]
的值,在必要的情况下交换两个元素的位置。经过多次循环后,最大的元素将被移动到数列的末尾。
最后,我们用一个for
循环来输出排序后的数组data
。结果应该为升序排列的数列。
方便起见,我们在程序中直接定义了随机数列。在实际应用中,我们可能需要使用输入函数scanf()
来获取用户输入,或者从文件中读取数列数据。
气泡排序是一种简单的排序算法,但是在大规模数据处理上可能效率不高。如果您有更高的需求,可以探索其他的复杂度更低的算法,例如快速排序或归并排序。