初学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位。
有不理解的,或者有问题,欢迎交流~
代码是参考网上的代码,有所修改~具体来源记不清了,保存了一段时间了