闲来无聊,练练脑子,活动一下筋骨。下面是基于C语言的优化冒泡排序核心代码,复制过去在C语言编译平台就能运行。可以很清楚理解冒泡排序的原理。
#include<stdio.h>
void BubbleSort(int k[],int n) //函数里形参也可以是:int *k
{
int i,j,temp,count1=0,count2=0,flag;
flag=1;
for(i=0;i<n-1&&flag;i++)
{
for(j=n-1;j>i;j--)
{
count1++;
flag=0;
if(k[j-1]>k[j])
{
count2++;
temp=k[j-1];
k[j-1]=k[j];
k[j]=temp;
flag=1;
}
}
}
printf("总共进行了%d次比较,进行了%d次移动" ,count1,count2);
}
int main(void)//比较,输出最大值
{
// int m, a[10]={ 9,7,0,1,5,4,2,3,6,8 };
// int m, a[10]={ 9,7,0,1,2,3,4,5,6,8 }; //那么排序的效率就大大增加了;
int m, a[10]={ 10,0,7,2,34,6,6,8 ,9,0};//那么排序的效率就大大增加了;
BubbleSort( a,10);
printf("排序后的结果是:" );
for(m=0;m<10;m++)
{
printf("%d\n\r" ,a[m]);
}
return 0; //结束主函数
}
/* 本函数关键要理解两个for循环的作用;count1和count2,以及flag变量的作用。 */
代码虽然很简单,但是在实际应用中却很有用。比如,在圆点博士的四轴飞行器AD参数传输中就有类似本函数的数字滤波函数;还有手机触摸屏的触摸坐标校正也有用到数字滤波。冒泡排序核心代码是经过优化处理了的,效率相对较高。