C程序 冒泡排序 使用攻略
简介
冒泡排序是一种基础的排序算法,它通过相邻元素的比较和交换来将未排序的元素依次排列位置,因为排序过程中,像气泡一样交换最大的元素,因此得名。
冒泡排序的思路
冒泡排序的基本思路是,依次对比相邻的两个元素,如果前面的元素大于后面的元素,就进行交换。这样一遍比较下来,最大的元素就被交换到了最后;重复这个过程,直到数组中的所有元素都排列好。
冒泡排序的实现
下面是一个基本的冒泡排序程序示例:
#include <stdio.h>
void bubbleSort(int a[], int n)
{
int i, j, temp;
for (i=n-1; i>0; i--)
{
for (j=0; j<i; j++)
{
if (a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main()
{
int a[] = {5, 9, 3, 8, 6, 2, 7, 1, 4};
int n = sizeof(a) / sizeof(int);
bubbleSort(a, n);
int i;
for (i=0; i<n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
上述程序中,bubbleSort
函数实现了冒泡排序,需要传入要排序的数组 a[]
和数组的长度 n
作为参数。
在 main
函数中,创建一个要排序的数组,并获取它的长度,然后将它传入 bubbleSort
函数中进行排序。最后输出排序后的结果。
示例说明
示例一
假设有一个数组 {8, 3, 2, 5, 4, 6, 1, 7}
,可以对这个数组进行冒泡排序:
- 第一次迭代
数组中第一个元素 8
和第二个元素 3
进行比较,因为 8
大于 3
,所以交换它们的位置,数组变成 {3, 8, 2, 5, 4, 6, 1, 7}
;接下来同理将第二个元素和第三个元素进行比较,因为 8
大于 2
,所以交换它们的位置,数组变成 {3, 2, 8, 5, 4, 6, 1, 7}
,依此类推。
- 第二次迭代
数组中第一个元素 3
和第二个元素 2
进行比较,因为 3
大于 2
,所以交换它们的位置,数组变成 {2, 3, 8, 5, 4, 6, 1, 7}
;接下来同理将第二个元素和第三个元素进行比较,因为 3
小于 8
,所以不需要交换它们的位置,数组变成 {2, 3, 8, 5, 4, 6, 1, 7}
,依此类推。
- 继续迭代
重复以上步骤,直到数组中的元素都排列好。
最终排列好的数组是 {1, 2, 3, 4, 5, 6, 7, 8}
。
示例二
下面是另一个排序示例,假设有一个数组 {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}
,可以对这个数组进行冒泡排序:
- 第一次迭代
数组中第一个元素 3
和第二个元素 1
进行比较,因为 3
大于 1
,所以交换它们的位置,数组变成 {1, 3, 4, 1, 5, 9, 2, 6, 5, 3}
;接下来同理将第二个元素和第三个元素进行比较,因为 3
小于 4
,所以不需要交换它们的位置,数组变成 {1, 3, 4, 1, 5, 9, 2, 6, 5, 3}
,依此类推。
- 第二次迭代
数组中第一个元素 1
和第二个元素 3
进行比较,因为 1
小于 3
,所以不需要交换它们的位置,数组变成 {1, 3, 4, 1, 5, 9, 2, 6, 5, 3}
;接下来同理将第二个元素和第三个元素进行比较,因为 3
小于 4
,所以不需要交换它们的位置,数组变成 {1, 3, 4, 1, 5, 9, 2, 6, 5, 3}
,依此类推。
- 继续迭代
重复以上步骤,直到数组中的元素都排列好。
最终排列好的数组是 {1, 1, 2, 3, 3, 4, 5, 5, 6, 9}
。