找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3700|回复: 0
打印 上一主题 下一主题
收起左侧

基于C语言的优化冒泡排序核心代码

[复制链接]
跳转到指定楼层
楼主
ID:80436 发表于 2015-5-19 02:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       闲来无聊,练练脑子,活动一下筋骨。下面是基于C语言的优化冒泡排序核心代码,复制过去在C语言编译平台就能运行。可以很清楚理解冒泡排序的原理。
  1. #include<stdio.h>
  2. void BubbleSort(int k[],int n)  //函数里形参也可以是:int *k
  3. {
  4. int i,j,temp,count1=0,count2=0,flag;
  5. flag=1;
  6. for(i=0;i<n-1&&flag;i++)
  7.     {
  8.     for(j=n-1;j>i;j--)
  9.     {
  10.            count1++;
  11.       flag=0;
  12.      if(k[j-1]>k[j])
  13.      {
  14.              count2++;
  15.            
  16.        temp=k[j-1];
  17.              k[j-1]=k[j];
  18.              k[j]=temp;
  19.        flag=1;
  20.      }
  21.   
  22.     }
  23. }
  24.   printf("总共进行了%d次比较,进行了%d次移动" ,count1,count2);
  25. }

  26. int main(void)//比较,输出最大值
  27. {
  28.   
  29. // int m, a[10]={ 9,7,0,1,5,4,2,3,6,8 };
  30. //  int m, a[10]={ 9,7,0,1,2,3,4,5,6,8 };  //那么排序的效率就大大增加了;
  31.    int m, a[10]={ 10,0,7,2,34,6,6,8 ,9,0};//那么排序的效率就大大增加了;
  32.     BubbleSort( a,10);
  33.    printf("排序后的结果是:" );
  34.    for(m=0;m<10;m++)
  35.    {
  36.          printf("%d\n\r" ,a[m]);
  37. }
  38. return 0; //结束主函数
  39. }
  40. /* 本函数关键要理解两个for循环的作用;count1和count2,以及flag变量的作用。   */

复制代码
       代码虽然很简单,但是在实际应用中却很有用。比如,在圆点博士的四轴飞行器AD参数传输中就有类似本函数的数字滤波函数;还有手机触摸屏的触摸坐标校正也有用到数字滤波。冒泡排序核心代码是经过优化处理了的,效率相对较高。

        -----王衍

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表