哈喽!
大家好,我们今天结束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;}
}
下面是运行结果图:
就到这里吧!我们下期见,拜拜~