C语言实现简单的冒泡排序
用C实现冒泡排序
常用的排序方法有冒泡排序法,选择排序法,插入排序法以及希尔排序法等。本文着重讲解如何利用C代码,实现冒泡排序。
首先,要了解什么是冒泡排序。冒泡排序是常用的一种排序方法,其基本方法就是逐次比较。即一次比较两个数,若它们的顺序错误,则它们交换;重复进行,直到没有需要交换为止。
以升序排序为例:
1、比较相邻数字的大小,若第一个数比第二个数大,则相互交换;
2、对每一对相邻的数作相同的工作,那么最后的数应该是最大的数;
3、针对所有数(除了最后一个)重复上述步骤,直到没有任何一对数字需要比较为止。
需要注意的是,第3条中所谓的“最后一个”是指前几步中已经处理过的最大的数,而不是整个数列的最后一个数。
例如,将下列数列用冒泡排序法从小到大重新排列;
23 67 12 28 78 96 8 88
每次排序后数列的变化如下:
第一趟排序:23 12 28 67 78 8 88 96
第二趟排序:12 23 28 67 8 78 88 96
第三趟排序:12 23 28 8 67 78 88 96
第四趟排序:12 23 8 28 67 78 88 96
第五趟排序:12 8 23 28 67 78 88 96
第六趟排序:8 12 23 28 67 78 88 96
第七趟排序:8 12 23 28 67 78 88 96
第八趟排序:8 12 23 28 67 78 88 96
:
:
:
经过一系列过程,最终数列次序为:8 12 23 28 67 78 88 96
通过对以上排序的分析,我们可以简要画出冒泡排序的流程图:
观察流程图,我们不难发现通过一个简单的循环结构,即可实现对一组数进行排序。
部分程序如下:
#include "stdio.h"
void main(){
int i,t,j,p;
int a[8]={23,67,12,28,78,96,8,88};
for(j=0;j<8;j++){
printf("第%d次排序如下: \n", j+1);
for(i=0;i<=6-j;i++){
if(a[i]>a[i+1]){
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(p=0;p<8;p++){
printf("%-5d\t",a[p]);
}
printf("\n");
}
printf("最终排序的数组为: \n");
for(i=0;i<8;i++){
printf("%-5d\t", a[i]);
}
printf("\n");
}
上一篇: 四川成都最有名的火锅店都有哪些呢
下一篇: 冒泡排序