C语言排序 C语言冒泡排序算法(Bubble Sort)

2025-11-01 11:31:11

1、冒泡排序原理:

设要排序的数据记录到一个数组中,把关键字较小的看成“较轻”的气泡,所以就应该上浮。从底部(数组下标较大的一端)开始,反复的从下向上扫描数组。进行每一遍扫描时,依次比较“相邻”的两个数据,如果“较轻”的气泡在下面,就要进行交换,把它们颠倒过来。(图片取自互联网)

C语言排序 C语言冒泡排序算法(Bubble Sort)

2、具体实现过程:第一步 输入数据

你可以直接将你所需要的数据存入数组,如int a[5] = {84,83,88,87,61};

也可以通过循环输入 

for(i = 0 ; i< n ;i++)

     {

         scanf("%d",&a[i]);

     }

来实现数据输入数组;

C语言排序 C语言冒泡排序算法(Bubble Sort)

3、具体实现过程:第二步 写循环

冒泡排序是从最低部扫描(数组下标大的一端);所以内部循环应该从数组下标较大的一方开始 for(j = n - 1 ; j > i ; j--)

内部循环确定以后,写外部循环;

  for(i = 0; i < n ; i++)

      for(j = n - 1 ; j > i ; j--) // j>i的是扫描第一遍以后,下标最小的一位数,已经变成最大的一位数

  

C语言排序 C语言冒泡排序算法(Bubble Sort)

C语言排序 C语言冒泡排序算法(Bubble Sort)

4、具体实现过程:第二步 写交换

       if(a[j - 1] < a[j])

            {

                temp = a[j - 1];

                a[j - 1]=a[j];

                a[j]=temp;

            }

C语言排序 C语言冒泡排序算法(Bubble Sort)

5、C语言实现:

#include <stdio.h>

int main()

{

    int a[5] = {84,83,88,87,61};

    int i,j;

    int temp;

    printf("按从大到小排序!\n");

    int n = 5 ;//数组最大的下标

    for(i = 0; i < n ; i++)

        for(j = n - 1 ; j > i ; j--)

        {

            if(a[j - 1] < a[j])

            {

                temp = a[j - 1];

                a[j - 1]=a[j];

                a[j]=temp;

            }

        }

    for(i = 0 ; i < n ; i++)

    {

        printf("%d ",a[i]);

    }

    return 0;

}

C语言排序 C语言冒泡排序算法(Bubble Sort)

6、运行程序,成功截图如下;

C语言排序 C语言冒泡排序算法(Bubble Sort)

7、气泡排序的时间复杂度为0(n^2);

C语言排序 C语言冒泡排序算法(Bubble Sort)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢