C语言之何为冒泡排序法

初学C语言时,就很烦这个冒泡排序法,两层循环几乎是背下来的,后来,学了数据结构,emmmm,在这么多排序法里,最喜欢的好像还是冒泡排序法~话不多说,上代码!

#include <stdio.h>
#define N 6
int main()
{
    int a[N], i, j, t,n;
    for (i = 0; i < N; i++) scanf("%d", &a[i]);
    for (n = 0; n < N; n++) printf("%d ", a[n]);
     printf("\n以下为排序过程\n");
    printf("\n");
    //这里的i也可以设置为0,只要保证两次循环比较的次数正确即可,同时,数据内容也要相应调整
    for (i = 1;  i <= N - 1; i++)      //N个数比较N-1趟
    {
        for (j = 1; j <= N - i; j++)
        {

            //第i趟比较N-i次
            if (a[j - 1] > a[j])      //两两比较,大的放后
            {
                t = a[j - 1];
                a[j - 1] = a[j];
                a[j] = t ;
            }
            for (n = 0; n < N; n++) printf("%d ", a[n]);
            printf("\n");

        }
        printf("\n");
    }
    for (i = 0; i < N; i++) printf("%d ", a[i]);
    return 0;
}

重要的不是代码,是解释^_^

其实这段代码已经很好的将冒泡排序法的原理表现出来了,以下为运行截图;

前两行数字,是输入的六个数字和显示的用户的输入,说白了,就是输出下,看输入有没问题。

最后一行数字,是排序后的结果,中间呢,就是排序的过程,六个数字,共排了五次,第n次排序,又排了6-n次,这6-n就是冒泡的过程。

例如,第一次排序,在每次比较时,数字6都会后移一个单位,最后到数组的尾巴。下一次排序呢,是从0-4位,依次类推,再下次,是从0-3位。

有不理解的,或者有问题,欢迎交流~

代码是参考网上的代码,有所修改~具体来源记不清了,保存了一段时间了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值