C程序 冒泡排序

  • Post category:C

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},可以对这个数组进行冒泡排序:

  1. 第一次迭代

数组中第一个元素 8 和第二个元素 3 进行比较,因为 8 大于 3,所以交换它们的位置,数组变成 {3, 8, 2, 5, 4, 6, 1, 7};接下来同理将第二个元素和第三个元素进行比较,因为 8 大于 2,所以交换它们的位置,数组变成 {3, 2, 8, 5, 4, 6, 1, 7},依此类推。

  1. 第二次迭代

数组中第一个元素 3 和第二个元素 2 进行比较,因为 3 大于 2,所以交换它们的位置,数组变成 {2, 3, 8, 5, 4, 6, 1, 7};接下来同理将第二个元素和第三个元素进行比较,因为 3 小于 8,所以不需要交换它们的位置,数组变成 {2, 3, 8, 5, 4, 6, 1, 7},依此类推。

  1. 继续迭代

重复以上步骤,直到数组中的元素都排列好。

最终排列好的数组是 {1, 2, 3, 4, 5, 6, 7, 8}

示例二

下面是另一个排序示例,假设有一个数组 {3, 1, 4, 1, 5, 9, 2, 6, 5, 3},可以对这个数组进行冒泡排序:

  1. 第一次迭代

数组中第一个元素 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. 第二次迭代

数组中第一个元素 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, 1, 2, 3, 3, 4, 5, 5, 6, 9}