一、算法框图
二、代码实现
/********************
名称:冒泡排序
作者:豆豆
********************/
#include<stdio.h>
#define LENGTH 6 //宏定义数列长度为 6
int main()
{
//【初始化】数列
int a[LENGTH]={18,8,64,56,34,7}; //这里用到了数列长度 6
//打印初始数列,查看初始化是否成功
printf("--------------------\n\n");
printf("初始数列为:\n");
printf("%d %d %d %d %d %d\n\n",
a[0],a[1],a[2],a[3],a[4],a[5]); //避免这行太长,加了一个换行
printf("--------------------\n");
//开始排序
for(int i=0;i<LENGTH-1;i++) //第一层循环,i代表【趟数】
{
printf("【第%d趟】\n",i+1);
for(int j=0;j<LENGTH-1;j++) //第二层循环,j代表【每一趟】交换的【次数】
{
printf("\n第%d次\n\n",j+1);
if(a[j]>a[j+1])
{
int t; //缓存变量
//交换
t = a[j] ;
a[j] = a[j+1] ;
a[j+1] = t ;
printf("%d %d %d %d %d %d\n",
a[0],a[1],a[2],a[3],a[4],a[5]); //如果本次交换,则输出交换后的数列
}
else
printf("次序正确,未交换!\n");
}
printf("\n****************"
"\n第%d趟输出结束!"
"\n****************\n",i+1); //字符串中间可以拆开
printf("--------------------\n");
}
//输出结果
printf("\n排序后数列为:\n");
printf("%d %d %d %d %d %d\n",
a[0],a[1],a[2],a[3],a[4],a[5]);
return 0;
}
三、运行结果
--------------------
初始数列为:
18 8 64 56 34 7
--------------------
【第1趟】
第1次
8 18 64 56 34 7
第2次
次序正确,未交换!
第3次
8 18 56 64 34 7
第4次
8 18 56 34 64 7
第5次
8 18 56 34 7 64
****************
第1趟输出结束!
****************
--------------------
【第2趟】
第1次
次序正确,未交换!
第2次
次序正确,未交换!
第3次
8 18 34 56 7 64
第4次
8 18 34 7 56 64
第5次
次序正确,未交换!
****************
第2趟输出结束!
****************
--------------------
【第3趟】
第1次
次序正确,未交换!
第2次
次序正确,未交换!
第3次
8 18 7 34 56 64
第4次
次序正确,未交换!
第5次
次序正确,未交换!
****************
第3趟输出结束!
****************
--------------------
【第4趟】
第1次
次序正确,未交换!
第2次
8 7 18 34 56 64
第3次
次序正确,未交换!
第4次
次序正确,未交换!
第5次
次序正确,未交换!
****************
第4趟输出结束!
****************
--------------------
【第5趟】
第1次
7 8 18 34 56 64
第2次
次序正确,未交换!
第3次
次序正确,未交换!
第4次
次序正确,未交换!
第5次
次序正确,未交换!
****************
第5趟输出结束!
****************
--------------------
排序后数列为:
7 8 18 34 56 64