哈喽!
大家好,我们今天结束C语言期末考试啦
不知道各位同学考完了没呢?
由于在考试前依然有很多同学不清楚冒泡法怎么用
这期我专门整理了一下冒泡法的用法,
供大家参考哦!
我们先来看一下源代码:
// 冒泡法对数字进行排序 #include<stdio.h> int main() { int a[10],i,j,t; printf("请输入10个数字,数字中间用空格隔开:\n"); // 输出给用户提示信息 for(i=0;i<=9;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) // 排序过程 for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("排序后的结果是:\n"); // 提示输出 for(i=0;i<=9;i++) printf("%d\t",a[i]); return 0; }
从代码中我们可以发现,除去输入输出数组语句外,
并没有多少代码了,
冒泡法的原理就是:
假设将10个数从小到大排列,
相邻两个数比较,如果发现前一项比后一项大,那么这两项
就互换,之后再两两相比,这样比较一轮下来,
我们就可以得到一个最大值。
需要排十个数,外循环就是i=0~i=8,9次即可
for(i=0;i<9;i++) { for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
下面是运行结果图:
当然,我们还可以将代码加以改进,比如自定义函数:
// 升级版----调用函数使用冒泡法 #include<stdio.h> void fun(int a[]); //声明使用冒泡法排序的函数 int main() { int a[10],i; printf("请输入10个数字,数字中间用空格隔开:\n"); // 输出给用户提示信息 for(i=0;i<=9;i++) scanf("%d",&a[i]); // 在这里输入10个要排序的数字 fun(a); // 调用函数 printf("排序后的结果是:\n"); // 提示输出 for(i=0;i<=9;i++) printf("%d\t",a[i]); // 输出排好序后的10个数字 return 0; } // 函数体 void fun(int a[]) { int t,i,j; for(i=0;i<9;i++) // 排序过程 for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
下面是运行结果图:
就到这里吧!我们下期见,拜拜~